:root { --plus-green:#84cc16; --plus-blue:#2563eb; }
body { background:#f8fafc; }
.align-super { vertical-align: super; font-size:.75rem; }
.card { border:1px solid rgba(15,23,42,.08); }
.navbar-brand { letter-spacing:.02em; }
.chuni-player-card { background:linear-gradient(135deg,#ffffff 0,#f7fee7 60%,#e0f2fe 100%); border-radius:1rem; padding:1rem; border:1px solid rgba(0,0,0,.08); position:relative; overflow:hidden; }
.chuni-player-card:after { content:""; position:absolute; right:-60px; bottom:-80px; width:220px; height:220px; border-radius:50%; background:rgba(132,204,22,.18); }
.player-title { background:linear-gradient(90deg,#0f172a,#334155); color:#fff; border-radius:.5rem; padding:.35rem .7rem; margin-bottom:.8rem; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.avatar-circle { width:84px; height:84px; border-radius:50%; background:radial-gradient(circle at 30% 25%,#fff,#86efac 35%,#16a34a); color:#0f172a; display:grid; place-items:center; font-size:2rem; font-weight:900; border:4px solid white; box-shadow:0 6px 18px rgba(0,0,0,.18); }
.name-split { letter-spacing:.08em; }
.ticket-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:.75rem; }
.ticket-option { cursor:pointer; border:2px solid transparent; border-radius:.75rem; padding:.35rem; background:#fff; box-shadow:0 2px 8px rgba(15,23,42,.08); transition:.15s; display:block; }
.ticket-option input { display:none; }
.ticket-option img { width:100%; aspect-ratio:560/156; object-fit:cover; border-radius:.45rem; display:block; background:#111; }
.ticket-option span { display:block; font-size:.85rem; margin-top:.25rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ticket-option:hover { transform:translateY(-1px); box-shadow:0 4px 14px rgba(15,23,42,.15); }
.ticket-option.selected { border-color:#2563eb; background:#eff6ff; }
.table td, .table th { vertical-align:middle; }
.font-monospace { font-size:.875rem; }
.badge { font-weight:600; }
@media (max-width: 576px) { .ticket-grid { grid-template-columns:1fr 1fr; } .avatar-circle { width:64px; height:64px; } }
.home-hero { background:linear-gradient(90deg,#ffffff,#eef9ff 55%,#f7fee7); border:1px solid rgba(15,23,42,.08); border-radius:1rem; box-shadow:0 4px 18px rgba(15,23,42,.05); }
.home-hero-inner { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1.2rem 1.4rem; }
.home-eyebrow { font-size:.75rem; font-weight:800; letter-spacing:.12em; color:#2563eb; }
.cnp-net-login-card { width:300px; max-width:100%; background:#fff; border:1px solid #d9d9d9; border-radius:2px; padding:8px 8px 10px; color:#111; }
.cnp-title-strip { height:27px; border:1px solid #e6d88c; border-radius:4px; background:linear-gradient(90deg,#fff8c7,#fff,#fff1ae); box-shadow:inset 0 0 0 2px rgba(255,255,255,.65); display:flex; align-items:center; justify-content:center; overflow:hidden; font-weight:800; line-height:1; }
.cnp-title-strip span { display:block; width:100%; text-align:center; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-shadow:0 1px #fff; }
.cnp-title-strip img { max-width:100%; max-height:100%; object-fit:contain; }
.cnp-profile-main { display:flex; align-items:baseline; gap:14px; padding:8px 8px 2px; }
.cnp-lv { font-weight:800; font-size:13px; white-space:nowrap; }
.cnp-name { font-weight:900; font-size:17px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cnp-profile-row { display:flex; align-items:center; gap:14px; padding:0 8px; min-height:34px; }
.cnp-profile-row span { font-size:13px; }
.cnp-profile-row strong { font-size:15px; font-weight:400; }
.cnp-emblems { display:flex; align-items:center; gap:4px; min-height:28px; }
.cnp-emblems img { max-height:28px; max-width:44px; object-fit:contain; }
.cnp-profile-foot { padding:2px 8px 0; color:#64748b; font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media (max-width: 576px) { .home-hero-inner { align-items:flex-start; flex-direction:column; } .cnp-net-login-card { width:100%; } }

/* chunirec-like visual cards */
.player-profile-container { position:relative; overflow:hidden; width:300px; max-width:100%; min-height:112px; border-radius:.35rem; background:#f8fafc; border:1px solid rgba(15,23,42,.12); }
.player-profile-container.shadow-sm { box-shadow:0 .125rem .45rem rgba(0,0,0,.12)!important; }
.player-profile-fg { position:relative; z-index:2; padding:.45rem .5rem .55rem; }
.player-profile-bg { position:absolute; inset:0; z-index:1; opacity:.22; background:linear-gradient(135deg,#dbeafe,#f7fee7 70%); }
.player-title-container { height:28px; overflow:hidden; margin-bottom:.35rem; }
.player-title-inner { height:28px; border-radius:.25rem; display:flex; align-items:center; justify-content:center; padding:0 .5rem; font-weight:800; font-size:.86rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.player-title-inner img { max-width:100%; max-height:100%; object-fit:contain; }
.bg-platinum { background:linear-gradient(90deg,#e5e7eb,#fff,#cbd5e1); color:#111827; }
.bg-platinum2 { background:linear-gradient(90deg,#e0f2fe,#fff,#bfdbfe); color:#111827; }
.bg-gold { background:linear-gradient(90deg,#f59e0b,#fde68a,#f59e0b); color:#111827; }
.bg-gold2 { background:linear-gradient(90deg,#c084fc,#fde68a,#f59e0b); color:#111827; }
.player-profile-container-row { display:flex; align-items:center; gap:.4rem; min-height:31px; }
.player-profile-container-head { min-width:58px; font-size:1.08rem; }
.player-profile-container-label { min-width:72px; color:#334155; font-size:.82rem; font-weight:700; }
.player-profile-container-data { font-weight:800; font-size:1.03rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.player-profile-name-char { display:inline-block; margin-right:.02em; }
.battle-rank-container, .classemblem-container { display:inline-flex; align-items:center; gap:.15rem; }
.cnp-card-character { position:absolute; right:-2px; bottom:-6px; z-index:1; width:105px; height:105px; object-fit:contain; opacity:.95; filter:drop-shadow(0 6px 10px rgba(0,0,0,.25)); }
.cnp-asset-chip img { max-height:28px; max-width:56px; object-fit:contain; }
.cnp-image-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(74px,1fr)); gap:.5rem; }
.cnp-image-grid img { width:100%; aspect-ratio:1/1; object-fit:contain; background:#f1f5f9; border:1px solid #e2e8f0; border-radius:.5rem; padding:.25rem; }
.newer-best-table { display:grid; grid-template-columns:repeat(auto-fill,minmax(310px,1fr)); gap:.75rem; }
.newer-best-table-cell { min-height:6.25rem; }
.newer-best-table-cell .jacket { width:6em; height:6em; min-width:6em; min-height:6em; background:#e2e8f0; background-size:cover; background-position:center; display:grid; place-items:center; color:#64748b; font-weight:800; }
.newer-best-table-cell-index { font-size:.75rem; color:#64748b; font-weight:800; }
.newer-best-table-cell-title { font-weight:800; line-height:1.25; height:2.55em; overflow:hidden; }
.diff-corner { position:absolute; width:2em; height:2em; transform:rotate(45deg); transform-origin:center; top:-1em; right:-1em; outline:2px solid var(--bs-white); }
.bg-MAS,.diff-MAS { background:#a855f7; }
.bg-ULT,.diff-ULT { background:#111827; }
.bg-EXP,.diff-EXP { background:#f97316; }
.bg-ADV,.diff-ADV { background:#facc15; }
.bg-BAS,.diff-BAS { background:#22c55e; }
.bg-WE,.diff-WE { background:#ec4899; }
.cnp-record-img { width:44px; height:44px; object-fit:cover; border-radius:.35rem; background:#e2e8f0; }
.cnp-character-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:.75rem; }
.cnp-character-card { display:flex; gap:.75rem; align-items:center; padding:.75rem; border:1px solid rgba(15,23,42,.1); border-radius:.75rem; background:white; box-shadow:0 .125rem .35rem rgba(15,23,42,.06); }
.cnp-character-card img { width:58px; height:58px; object-fit:contain; background:#f1f5f9; border-radius:.5rem; }
.cnp-character-card .name { font-weight:800; line-height:1.25; }
@media (max-width: 576px) { .newer-best-table { grid-template-columns:1fr; } .player-profile-container { width:100%; } .cnp-card-character { width:86px; height:86px; } }


/* CHUNITHM-NET style player profile card */
.net-player-profile { position:relative; display:flex; width:330px; max-width:100%; min-height:186px; background:#111 center/cover no-repeat; border-radius:8px; overflow:hidden; color:#fff; padding:10px; box-shadow:0 .25rem .65rem rgba(15,23,42,.22); }
.net-player-profile::before { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(0,0,0,.12),rgba(0,0,0,.04)); pointer-events:none; }
.net-player-left, .net-player-right { position:relative; z-index:1; }
.net-player-left { width:104px; flex:0 0 104px; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; padding-top:8px; }
.net-player-chara { width:92px; height:92px; background:rgba(255,255,255,.35) center/contain no-repeat; border-radius:8px; display:grid; place-items:center; overflow:hidden; }
.net-player-chara img { width:82px; height:82px; object-fit:contain; filter:drop-shadow(0 4px 8px rgba(0,0,0,.3)); }
.net-player-battlerank { width:92px; min-height:30px; margin-top:8px; display:grid; place-items:center; }
.net-player-battlerank img { max-width:92px; max-height:34px; object-fit:contain; }
.net-player-right { flex:1; min-width:0; padding-left:4px; }
.net-team-line { height:18px; margin-left:auto; margin-bottom:2px; max-width:170px; background:linear-gradient(90deg,#7c3aed,#a855f7); border-radius:9px 2px 2px 9px; color:#fff; font-size:10px; line-height:18px; padding:0 7px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; text-align:right; }
.net-honor-row { display:flex; gap:4px; align-items:center; margin-bottom:4px; }
.net-honor-short, .net-honor-empty { height:25px; border-radius:4px; background:linear-gradient(90deg,#e5e7eb,#fff,#cbd5e1) center/cover no-repeat; box-shadow:inset 0 0 0 1px rgba(255,255,255,.65); }
.net-honor-short { flex:1 1 auto; min-width:0; display:flex; align-items:center; justify-content:center; padding:0 6px; color:#111; font-size:12px; font-weight:800; text-shadow:0 1px rgba(255,255,255,.8); overflow:hidden; }
.net-honor-short span { display:block; max-width:100%; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.net-honor-empty { flex:0 0 25px; opacity:.75; }
.net-reborn { position:absolute; top:49px; left:0; width:22px; height:22px; border-radius:50%; background:#f59e0b; color:#fff; display:flex; align-items:center; justify-content:center; font-weight:900; font-size:13px; -webkit-text-stroke:.4px rgba(0,0,0,.35); box-shadow:0 1px 4px rgba(0,0,0,.35); }
.net-name-row { position:relative; display:flex; align-items:center; gap:6px; min-height:31px; padding-left:23px; margin-bottom:4px; }
.net-lv { flex:0 0 38px; height:20px; border-radius:3px; background:#111827; color:#fef3c7; display:flex; align-items:center; justify-content:center; font-weight:900; font-size:13px; }
.net-lv::before { content:"Lv."; font-size:9px; margin-right:1px; color:#fff; }
.net-name { min-width:0; flex:1; color:#fff; font-weight:900; font-size:15px; line-height:1.05; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-shadow:0 1px 2px rgba(0,0,0,.75); }
.net-class-emblem { flex:0 0 30px; display:grid; place-items:center; }
.net-class-emblem img { max-width:30px; max-height:30px; object-fit:contain; }
.net-rating-row { min-height:31px; display:flex; align-items:center; padding-left:8px; }
.net-rating-digits { display:flex; align-items:center; gap:1px; height:28px; }
.net-rating-digits img { height:26px; width:auto; object-fit:contain; filter:drop-shadow(0 1px 2px rgba(0,0,0,.45)); }
.net-rating-digits span, .net-rating-text { font-weight:900; font-size:22px; color:#fde047; text-shadow:0 1px 2px rgba(0,0,0,.75); }
.net-rating-text { font-size:16px; }
.net-overpower, .net-lastplay { margin-left:8px; height:18px; line-height:18px; max-width:190px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; border-radius:9px; padding:0 8px; font-size:11px; font-weight:700; color:#fff; background:rgba(0,0,0,.52); }
.net-overpower { margin-top:1px; }
.net-lastplay { margin-top:3px; }
@media (max-width:576px){ .net-player-profile{width:100%;} .net-player-left{width:96px;flex-basis:96px;} .net-player-chara{width:84px;height:84px;} .net-player-chara img{width:76px;height:76px;} .net-team-line{max-width:150px;} }

/* CHUNITHM-NET style play log cards */
.cnp-playlog-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:1rem; }
.cnp-playlog-card { position:relative; overflow:hidden; border-radius:12px; border:1px solid rgba(15,23,42,.12); background:linear-gradient(135deg,#f8fafc,#ffffff); box-shadow:0 .125rem .5rem rgba(15,23,42,.08); }
.cnp-playlog-date { background:linear-gradient(90deg,#1e293b,#334155); color:#fff; font-weight:800; font-size:.86rem; padding:.42rem .75rem; letter-spacing:.02em; }
.cnp-playlog-body { display:flex; gap:.75rem; padding:.75rem; }
.cnp-playlog-jacket { position:relative; flex:0 0 94px; width:94px; height:94px; border-radius:10px; overflow:hidden; background:#e2e8f0; display:grid; place-items:center; color:#64748b; font-size:.7rem; font-weight:800; text-align:center; box-shadow:inset 0 0 0 1px rgba(15,23,42,.08); }
.cnp-playlog-jacket img { width:100%; height:100%; object-fit:cover; display:block; }
.cnp-playlog-main { min-width:0; flex:1; }
.cnp-playlog-track-row { display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin-bottom:.35rem; }
.cnp-playlog-track { display:inline-flex; align-items:center; height:22px; padding:0 .55rem; border-radius:999px; background:#111827; color:#fff; font-size:.74rem; font-weight:900; }
.cnp-playlog-diff { display:inline-flex; align-items:center; justify-content:center; min-width:44px; height:22px; border-radius:4px; color:#fff; font-size:.75rem; font-weight:900; }
.cnp-playlog-diff-img { max-width:74px; max-height:22px; object-fit:contain; }
.cnp-playlog-musicbox { border:1px solid rgba(15,23,42,.1); border-radius:8px; background:#fff; padding:.45rem .55rem; }
.cnp-playlog-title { font-weight:900; line-height:1.2; min-height:2.4em; max-height:2.4em; overflow:hidden; word-break:break-word; }
.cnp-playlog-score-row { display:flex; align-items:center; gap:.45rem; margin-top:.3rem; }
.cnp-score-head { font-size:.66rem; font-weight:900; color:#fff; background:#475569; border-radius:4px; padding:.12rem .35rem; }
.cnp-playlog-score { font-size:1.16rem; font-weight:900; font-variant-numeric:tabular-nums; letter-spacing:.02em; }
.cnp-playlog-icons { min-height:24px; display:flex; align-items:center; gap:.25rem; flex-wrap:wrap; margin-top:.45rem; }
.cnp-playlog-icons img { max-height:22px; width:auto; object-fit:contain; }
.cnp-playlog-card.compact .cnp-playlog-jacket { flex-basis:72px; width:72px; height:72px; }
.cnp-playlog-card.compact .cnp-playlog-date { font-size:.78rem; padding:.34rem .6rem; }
.cnp-playlog-card.compact .cnp-playlog-title { min-height:1.25em; max-height:2.5em; }
.cnp-playlog-card.compact .cnp-playlog-score { font-size:1rem; }
@media (max-width: 767.98px) { .cnp-playlog-grid { grid-template-columns:1fr; } .cnp-playlog-jacket { flex-basis:86px; width:86px; height:86px; } }
@media (max-width: 380px) { .cnp-playlog-body { gap:.55rem; padding:.6rem; } .cnp-playlog-jacket { flex-basis:74px; width:74px; height:74px; } .cnp-playlog-score { font-size:1rem; } }

.ticket-option small { display:block; color:#64748b; font-size:.72rem; margin-top:.1rem; }
.ticket-calc-preview { border:1px solid #bfdbfe; background:#eff6ff; color:#1e3a8a; border-radius:.75rem; padding:.75rem 1rem; }
.ticket-calc-preview strong { font-size:1.2rem; }

/* 2026-07-04: home profile/ticket visual adjustment */
.cnp-net-profile.box_playerprofile {
  position:relative;
  display:flex;
  gap:8px;
  width:100%;
  max-width:460px;
  min-height:176px;
  margin:0 auto;
  padding:10px 12px;
  overflow:hidden;
  color:#fff;
  background:#111 center/100% 100% no-repeat;
  border-radius:8px;
  box-shadow:0 .2rem .65rem rgba(15,23,42,.22);
}
.cnp-net-profile.box_playerprofile::before {
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(0,0,0,.10),rgba(0,0,0,.02));
  pointer-events:none;
}
.cnp-net-profile .player_data_left,
.cnp-net-profile .player_data_right { position:relative; z-index:1; }
.cnp-net-profile .player_data_left { flex:0 0 120px; width:120px; display:flex; flex-direction:column; align-items:center; padding-top:8px; }
.cnp-net-profile .player_chara { width:108px; height:108px; background:center/contain no-repeat; display:grid; place-items:center; overflow:hidden; }
.cnp-net-profile .player_chara img { width:94px; height:94px; object-fit:contain; filter:drop-shadow(0 3px 7px rgba(0,0,0,.35)); }
.cnp-net-profile .player_battlerank { width:112px; height:36px; margin-top:6px; display:grid; place-items:center; }
.cnp-net-profile .player_battlerank img { max-width:112px; max-height:36px; object-fit:contain; }
.cnp-net-profile .player_data_right { flex:1 1 auto; min-width:0; padding-top:2px; }
.cnp-net-profile .player_team_emblem_purple { position:absolute; top:0; right:0; width:18px; height:18px; border-radius:50%; background:#7c3aed; box-shadow:0 1px 4px rgba(0,0,0,.25); }
.cnp-net-profile .player_team_data { height:19px; max-width:230px; margin-left:auto; margin-right:20px; padding:0 8px; border-radius:10px 2px 2px 10px; background:linear-gradient(90deg,#7c3aed,#a855f7); overflow:hidden; }
.cnp-net-profile .player_team_name { line-height:19px; font-size:10px; text-align:right; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cnp-net-profile .player_honor_block { display:flex; gap:4px; align-items:center; margin:3px 0 5px; }
.cnp-net-profile .player_honor_short { height:27px; border-radius:4px; background:linear-gradient(90deg,#fef3c7,#fff,#fef08a) center/100% 100% no-repeat; box-shadow:inset 0 0 0 1px rgba(255,255,255,.75); display:flex; align-items:center; justify-content:center; overflow:hidden; color:#111; font-weight:900; text-shadow:0 1px rgba(255,255,255,.85); }
.cnp-net-profile .player_honor_short:first-child { flex:1 1 auto; min-width:0; padding:0 6px; }
.cnp-net-profile .player_honor_short.empty { flex:0 0 27px; opacity:.75; background:rgba(255,255,255,.32); }
.cnp-net-profile .player_honor_text_view,
.cnp-net-profile .player_honor_text { min-width:0; width:100%; overflow:hidden; }
.cnp-net-profile .player_honor_text span { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-align:center; font-size:13px; }
.cnp-net-profile .player_reborn { position:absolute; left:0; top:52px; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:linear-gradient(#ffd166,#d97706); color:#fff; font-weight:900; font-size:14px; text-shadow:0 1px 2px #000; box-shadow:0 1px 4px rgba(0,0,0,.35); }
.cnp-net-profile .player_name { position:relative; display:flex; align-items:center; gap:7px; min-height:34px; padding-left:26px; }
.cnp-net-profile .player_lv { flex:0 0 46px; height:22px; display:flex; align-items:center; justify-content:center; background:#111827; color:#fff7ad; border-radius:3px; font-weight:900; font-size:14px; box-shadow:inset 0 0 0 1px rgba(255,255,255,.18); }
.cnp-net-profile .player_lv::before { content:"Lv."; margin-right:2px; color:#fff; font-size:10px; }
.cnp-net-profile .player_name_in { min-width:0; flex:1 1 auto; font-size:18px; font-weight:900; line-height:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:#fff; text-shadow:0 2px 2px rgba(0,0,0,.85); }
.cnp-net-profile .player_classemblem { flex:0 0 34px; display:grid; place-items:center; }
.cnp-net-profile .player_classemblem img { max-width:34px; max-height:34px; object-fit:contain; }
.cnp-net-profile .player_rating { min-height:32px; display:flex; align-items:center; padding-left:8px; margin-top:1px; }
.cnp-net-profile .player_rating_num_block { display:flex; align-items:center; gap:1px; height:30px; }
.cnp-net-profile .player_rating_num_block img { height:28px; width:auto; object-fit:contain; filter:drop-shadow(0 1px 2px rgba(0,0,0,.55)); }
.cnp-net-profile .rating-fallback,
.cnp-net-profile .rating-fallback-char { color:#fff; font-size:22px; font-weight:900; text-shadow:0 2px 2px rgba(0,0,0,.8); }
.cnp-net-profile .player_overpower,
.cnp-net-profile .player_lastplaydate { margin-left:8px; margin-top:3px; max-width:260px; height:19px; line-height:19px; padding:0 8px; border-radius:10px; background:rgba(0,0,0,.55); overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.cnp-net-profile .player_overpower_text,
.cnp-net-profile .player_lastplaydate_text { font-size:11px; font-weight:800; color:#fff; }
@media (max-width: 480px) {
  .cnp-net-profile.box_playerprofile { min-height:156px; padding:8px; gap:5px; }
  .cnp-net-profile .player_data_left { flex-basis:98px; width:98px; }
  .cnp-net-profile .player_chara { width:90px; height:90px; }
  .cnp-net-profile .player_chara img { width:78px; height:78px; }
  .cnp-net-profile .player_battlerank { width:94px; height:30px; }
  .cnp-net-profile .player_name_in { font-size:15px; }
  .cnp-net-profile .player_honor_text span { font-size:12px; }
  .cnp-net-profile .player_team_data { max-width:165px; }
}

.ticket-grid { grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:.55rem; }
.ticket-option { padding:.28rem; border-radius:.55rem; }
.ticket-option img { aspect-ratio:252/76; object-fit:contain; border-radius:.35rem; background:#111; max-height:76px; }
.ticket-option span { font-size:.78rem; }
.ticket-option small { font-size:.68rem; }
@media (max-width: 576px) { .ticket-grid { grid-template-columns:1fr; } .ticket-option img { max-height:86px; } }


/* 2026-07-04 emergency fix: stop home profile overlap and keep ticket images proportional */
.cnp-home-profile-fixed.net-player-profile {
  width: 360px;
  min-height: 164px;
  padding: 8px;
  background-color:#bdbdbd;
  background-size:100% 100%;
  background-position:center;
  align-items:stretch;
}
.cnp-home-profile-fixed .net-player-left { flex:0 0 108px; width:108px; padding-top:5px; }
.cnp-home-profile-fixed .net-player-chara { width:96px; height:96px; border-radius:2px; background-size:contain; background-repeat:no-repeat; }
.cnp-home-profile-fixed .net-player-chara img { width:86px; height:86px; object-fit:contain; }
.cnp-home-profile-fixed .net-player-battlerank { width:96px; min-height:28px; margin-top:5px; }
.cnp-home-profile-fixed .net-player-battlerank img { max-width:96px; max-height:28px; }
.cnp-home-profile-fixed .net-player-right { padding-left:2px; padding-right:0; }
.cnp-home-profile-fixed .net-team-line { height:16px; line-height:16px; margin-bottom:3px; max-width:160px; font-size:9px; opacity:.95; }
.cnp-home-profile-fixed .net-team-line.placeholder { opacity:0; }
.cnp-home-profile-fixed .net-honor-row { margin-bottom:4px; }
.cnp-home-profile-fixed .net-honor-short, .cnp-home-profile-fixed .net-honor-empty { height:24px; }
.cnp-home-profile-fixed .net-honor-empty { flex-basis:24px; }
.cnp-home-profile-fixed .net-honor-short span { font-size:12px; }
.cnp-home-profile-fixed .net-reborn { top:54px; left:102px; z-index:3; }
.cnp-home-profile-fixed .net-name-row { min-height:28px; padding-left:24px; margin-bottom:2px; }
.cnp-home-profile-fixed .net-lv { flex-basis:40px; height:21px; font-size:13px; }
.cnp-home-profile-fixed .net-name { font-size:16px; }
.cnp-home-profile-fixed .net-class-emblem { flex-basis:28px; }
.cnp-home-profile-fixed .net-class-emblem img { max-width:28px; max-height:28px; }
.cnp-home-profile-fixed .net-rating-row { min-height:28px; padding-left:2px; }
.cnp-home-profile-fixed .net-rating-digits { height:28px; }
.cnp-home-profile-fixed .net-rating-digits img { height:27px; }
.cnp-home-profile-fixed .net-rating-digits span { font-size:23px; }
.cnp-home-profile-fixed .net-overpower, .cnp-home-profile-fixed .net-lastplay { margin-left:0; height:18px; line-height:18px; max-width:214px; font-size:10px; }
@media (max-width: 420px) {
  .cnp-home-profile-fixed.net-player-profile { width:100%; min-height:150px; }
  .cnp-home-profile-fixed .net-player-left { flex-basis:94px; width:94px; }
  .cnp-home-profile-fixed .net-player-chara { width:84px; height:84px; }
  .cnp-home-profile-fixed .net-player-chara img { width:76px; height:76px; }
  .cnp-home-profile-fixed .net-reborn { left:88px; top:50px; }
  .cnp-home-profile-fixed .net-name { font-size:14px; }
  .cnp-home-profile-fixed .net-rating-digits img { height:23px; }
  .cnp-home-profile-fixed .net-overpower, .cnp-home-profile-fixed .net-lastplay { max-width:180px; }
}
.ticket-option img { aspect-ratio:252/76; object-fit:contain !important; background:#111; max-height:76px; }
.ticket-grid { grid-template-columns:repeat(auto-fill,minmax(168px,1fr)); }

/* emergencyfix2: home profile back to chunirec-like compact card */
.cnp-chunirec-profile.player-profile-container {
  width: 320px;
  max-width: 100%;
  min-height: 116px;
  background: #fff;
  border: 1px solid #d6d6d6;
  border-radius: 2px;
}
.cnp-chunirec-profile .player-profile-fg { padding: 8px 10px 9px; }
.cnp-chunirec-profile .player-title-container { height: 29px; margin-bottom: 5px; }
.cnp-chunirec-profile .player-title-inner {
  height: 27px;
  border: 1px solid #e6d98c;
  border-radius: 4px;
  background: linear-gradient(90deg,#fff8bd,#fff,#fff2ad);
  background-size: 100% 100%;
  color: #111;
  box-shadow: inset 0 0 0 2px rgba(255,255,255,.7);
}
.cnp-chunirec-profile .player-title-inner p { margin:0; width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:center; }
.cnp-chunirec-profile .player-profile-container-row { min-height: 30px; gap: 10px; }
.cnp-chunirec-profile .player-profile-container-head { flex: 0 0 74px; min-width:74px; font-size: 15px; color:#111; }
.cnp-chunirec-profile .player-profile-container-data { color:#111; font-size: 16px; min-width:0; }
.cnp-chunirec-profile .player-profile-container-label { flex:0 0 72px; min-width:72px; color:#111; font-size: 12px; }
.cnp-chunirec-profile .cnp-chunirec-rating-text { font-size: 15px; font-weight: 400; flex: 0 0 auto; }
.cnp-chunirec-profile .cnp-chunirec-emblems { margin-left:auto; display:flex; align-items:center; gap:4px; min-width:54px; justify-content:flex-end; }
.cnp-chunirec-profile .cnp-chunirec-emblems img { max-height: 26px; max-width: 42px; object-fit: contain; }
.cnp-chunirec-profile .player-profile-bg {
  opacity: 1;
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(248,250,252,.98));
}
@media (max-width:576px){
  .cnp-chunirec-profile.player-profile-container{ width:100%; }
  .cnp-chunirec-profile .player-profile-container-head{ flex-basis:66px; min-width:66px; }
  .cnp-chunirec-profile .player-profile-container-label{ flex-basis:64px; min-width:64px; }
  .cnp-chunirec-profile .player-profile-container-data{ font-size:15px; }
}


/* chariconfix: chunirec風ホームカードに使用キャラと大きいエンブレムを追加 */
.cnp-chunirec-profile.player-profile-container {
  width: 390px;
  min-height: 135px;
}
.cnp-chunirec-profile .player-title-container {
  margin-bottom: 7px;
}
.cnp-chunirec-body {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.cnp-chunirec-character {
  flex: 0 0 74px;
  width: 74px;
  height: 74px;
  border-radius: 4px;
  background: rgba(255,255,255,.85) center/contain no-repeat;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border: 1px solid rgba(15,23,42,.12);
}
.cnp-chunirec-character img {
  width: 66px;
  height: 66px;
  object-fit: cover;
  border-radius: 2px;
}
.cnp-chunirec-info {
  flex: 1 1 auto;
  min-width: 0;
}
.cnp-chunirec-profile .player-profile-container-row {
  min-height: 33px;
  gap: 8px;
}
.cnp-chunirec-profile .player-profile-container-head {
  flex: 0 0 70px;
  min-width: 70px;
}
.cnp-chunirec-profile .player-profile-container-label {
  flex: 0 0 70px;
  min-width: 70px;
}
.cnp-chunirec-profile .player-profile-container-data {
  flex: 1 1 auto;
}
.cnp-chunirec-profile .cnp-chunirec-rating-text {
  flex: 0 0 auto;
  min-width: 52px;
}
.cnp-chunirec-profile .cnp-chunirec-emblems {
  flex: 0 0 auto;
  margin-left: 4px;
  min-width: 104px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  align-self: center;
}
.cnp-chunirec-profile .cnp-chunirec-emblems img {
  object-fit: contain;
  display: block;
}
.cnp-chunirec-profile .cnp-chunirec-emblems .cnp-battle-rank-img {
  height: 34px;
  max-width: 58px;
}
.cnp-chunirec-profile .cnp-chunirec-emblems .cnp-class-emblem-img {
  height: 40px;
  max-width: 42px;
}
@media (max-width: 576px) {
  .cnp-chunirec-profile.player-profile-container { width: 100%; }
  .cnp-chunirec-body { gap: 8px; }
  .cnp-chunirec-character { flex-basis: 66px; width: 66px; height: 66px; }
  .cnp-chunirec-character img { width: 58px; height: 58px; }
  .cnp-chunirec-profile .player-profile-container-head { flex-basis: 58px; min-width: 58px; }
  .cnp-chunirec-profile .player-profile-container-label { flex-basis: 58px; min-width: 58px; }
  .cnp-chunirec-profile .cnp-chunirec-emblems { min-width: 86px; gap: 5px; }
  .cnp-chunirec-profile .cnp-chunirec-emblems .cnp-battle-rank-img { height: 28px; max-width: 48px; }
  .cnp-chunirec-profile .cnp-chunirec-emblems .cnp-class-emblem-img { height: 34px; max-width: 36px; }
}

/* UniDB-like music database */
.unidb-shell {
  position: relative;
  max-width: 1120px;
  margin: 0 auto;
}
.unidb-search-card {
  border: 1px solid rgba(15, 23, 42, .08);
  border-radius: 14px;
}
.unidb-music-list {
  display: flex;
  flex-direction: column;
}
.unidb-search-row {
  display: flex;
  align-items: stretch;
  gap: 1.35rem;
  position: relative;
  padding: 1rem 0;
  border-top: 1px solid rgba(15, 23, 42, .12);
  color: inherit;
  text-decoration: none;
}
.unidb-search-row:hover .unidb-search-title {
  text-decoration: underline;
}
.unidb-search-jacket,
.unidb-detail-jacket {
  flex: 0 0 auto;
  background: #f8fafc center/contain no-repeat;
  border-radius: .6rem;
  box-shadow: 0 .25rem .75rem rgba(15,23,42,.14);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  color: #94a3b8;
}
.unidb-search-jacket {
  width: 64px;
  height: 64px;
}
.unidb-detail-jacket {
  width: min(28vw, 190px);
  height: min(28vw, 190px);
  min-width: 112px;
  min-height: 112px;
}
.unidb-search-title {
  font-weight: 600;
  color: #111827;
}
.unidb-chart-chipline {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}
.unidb-chart-chip {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  border-radius: 999px;
  padding: .1rem .55rem;
  background: #f8fafc;
  border: 1px solid rgba(15,23,42,.12);
  font-size: .78rem;
  line-height: 1.35;
}
.diff-bas, .BAS { color: #23a36b; }
.diff-adv, .ADV { color: #f5a623; }
.diff-exp, .EXP { color: #ef476f; }
.diff-mas, .MAS { color: #8b5cf6; }
.diff-ult, .ULT { color: #111827; text-shadow: 0 0 0 #000; }
.diff-we, .WE { color: #64748b; }
.unknown-const {
  color: #dc2626 !important;
  font-style: italic;
  font-weight: 700;
}
.unidb-wallpaper {
  position: fixed;
  inset: 0;
  z-index: -1;
  opacity: .14;
  background-position: center;
  background-size: cover;
  filter: blur(28px) saturate(1.2);
  transform: scale(1.08);
  pointer-events: none;
}
.unidb-music-hero {
  display: flex;
  align-items: stretch;
}
.unidb-chart-table {
  overflow: hidden;
  max-width: 920px;
  background: rgba(255,255,255,.86);
  backdrop-filter: blur(8px);
}
.unidb-chart-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr 1.2fr 2.4fr;
  gap: .5rem;
  align-items: center;
  padding: .65rem 1rem;
  border-top: 1px solid rgba(15,23,42,.08);
}
.unidb-chart-head {
  border-top: 0;
  background: rgba(248,250,252,.9);
}
.unidb-const-input {
  max-width: 72px;
}
@media (max-width: 768px) {
  .unidb-music-hero { align-items: flex-start; }
  .unidb-search-row { gap: 1rem; }
  .unidb-chart-row {
    grid-template-columns: .75fr .8fr 1fr .8fr 1fr;
  }
  .unidb-chart-row > div:nth-child(6) {
    grid-column: 1 / -1;
  }
  .unidb-detail-jacket {
    width: 112px;
    height: 112px;
  }
}
@media (max-width: 520px) {
  .unidb-search-jacket { width: 56px; height: 56px; }
  .unidb-music-hero { display: block; }
  .unidb-detail-jacket { margin-bottom: 1rem; }
  .unidb-music-hero .ps-3 { padding-left: 0 !important; }
  .unidb-chart-row {
    grid-template-columns: .8fr 1fr 1fr;
    font-size: .9rem;
  }
  .unidb-chart-row > div:nth-child(4),
  .unidb-chart-row > div:nth-child(5),
  .unidb-chart-row > div:nth-child(6) {
    grid-column: 1 / -1;
  }
}


/* home-honor-emblemfix: NETのplayer_honor_short背景を拾いやすくし、エンブレムを大きく横並びにする */
.cnp-chunirec-profile.player-profile-container {
  width: 450px;
}
.cnp-chunirec-profile .cnp-chunirec-rating-row {
  align-items: center;
  flex-wrap: nowrap;
}
.cnp-chunirec-profile .cnp-chunirec-rating-text {
  min-width: 54px;
}
.cnp-chunirec-profile .cnp-chunirec-emblems {
  flex: 0 0 176px;
  min-width: 176px;
  margin-left: 8px;
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  line-height: 1;
  white-space: nowrap;
}
.cnp-chunirec-profile .cnp-chunirec-emblems img {
  display: block;
  object-fit: contain;
  flex: 0 0 auto;
}
.cnp-chunirec-profile .cnp-chunirec-emblems .cnp-battle-rank-img {
  height: 50px;
  max-height: 50px;
  max-width: 96px;
}
.cnp-chunirec-profile .cnp-chunirec-emblems .cnp-class-emblem-img {
  height: 58px;
  max-height: 58px;
  max-width: 64px;
}
.cnp-chunirec-profile .player-title-inner {
  background-position: center center;
  background-repeat: no-repeat;
  background-size: 100% 100%;
}
@media (max-width: 576px) {
  .cnp-chunirec-profile.player-profile-container { width: 100%; }
  .cnp-chunirec-profile .cnp-chunirec-rating-row { gap: 5px; }
  .cnp-chunirec-profile .cnp-chunirec-rating-text { min-width: 45px; }
  .cnp-chunirec-profile .cnp-chunirec-emblems {
    flex-basis: 122px;
    min-width: 122px;
    margin-left: 4px;
    gap: 7px;
  }
  .cnp-chunirec-profile .cnp-chunirec-emblems .cnp-battle-rank-img {
    height: 36px;
    max-height: 36px;
    max-width: 72px;
  }
  .cnp-chunirec-profile .cnp-chunirec-emblems .cnp-class-emblem-img {
    height: 42px;
    max-height: 42px;
    max-width: 46px;
  }
}

/* emblem-cropfix: battle rank画像の下余白をCSS側で切って、class emblemと見た目の中心を揃える */
.cnp-chunirec-profile .cnp-chunirec-emblems {
  align-items: center;
  overflow: visible;
}
.cnp-chunirec-profile .cnp-chunirec-emblems .cnp-battle-rank-img {
  width: 96px;
  height: 50px;
  max-width: 96px;
  max-height: 50px;
  object-fit: cover;
  object-position: top center;
}
.cnp-chunirec-profile .cnp-chunirec-emblems .cnp-class-emblem-img {
  height: 50px;
  max-height: 50px;
  max-width: 56px;
  object-fit: contain;
  object-position: center center;
}
@media (max-width: 576px) {
  .cnp-chunirec-profile .cnp-chunirec-emblems .cnp-battle-rank-img {
    width: 72px;
    height: 38px;
    max-width: 72px;
    max-height: 38px;
  }
  .cnp-chunirec-profile .cnp-chunirec-emblems .cnp-class-emblem-img {
    height: 38px;
    max-height: 38px;
    max-width: 42px;
  }
}


/* ticket-exp-manual: 手動チケットクリック記録とキャラEXP付与 */
.manual-ticket-log {
  border: 1px solid rgba(15,23,42,.10);
  border-radius: .8rem;
  padding: .85rem;
  background: #fff;
}
.manual-ticket-log table {
  min-width: 760px;
}
.manual-ticket-log thead th {
  font-size: .78rem;
  color: #64748b;
  font-weight: 700;
  border-bottom-color: rgba(15,23,42,.12);
}
.manual-ticket-log tbody td {
  vertical-align: middle;
}
.manual-ticket-target {
  cursor: pointer;
}
.ticket-option {
  cursor: pointer;
}
.ticket-option:active {
  transform: translateY(1px);
}

/* inferred rating detail */
.cnp-rating-grid .jacket { width: 6em; height: 6em; min-width: 6em; min-height: 6em; background-size: cover; background-position: center; display:flex; align-items:center; justify-content:center; background-color:#f3f4f6; color:#9ca3af; }
.cnp-rating-grid .newer-best-table-cell-title { min-height: 2.8em; }
@media (max-width: 575.98px) {
  .cnp-rating-grid .jacket { width: 5em; height: 5em; min-width: 5em; min-height: 5em; }
}

/* rank-image patch: score rank display from storage/assets/rank/*.png */
.cnp-rank-img {
  width: 64px;
  height: 18px;
  object-fit: contain;
  vertical-align: middle;
  display: inline-block;
}
.cnp-rank-img-box {
  min-height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.cnp-rank-img--table {
  margin-left: auto;
}
.cnp-rank-img--playlog {
  width: 64px;
  height: 18px;
}
