@import url('_tokens.css');
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--tx);font-family:"Pretendard","Apple SD Gothic Neo","Noto Sans JP","Noto Sans KR",system-ui,sans-serif;font-size:var(--font-sm);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%;height:auto}

/* ── Header ── */
.hdr{background:var(--bg2);border-bottom:1px solid var(--bd);padding:0;position:sticky;top:0;z-index:100}
.hdr-top{max-width:var(--container-max);margin:0 auto;padding:0 24px;height:var(--header-h);display:flex;align-items:center;gap:14px}
.logo{display:flex;align-items:center;gap:9px;flex-shrink:0}
.logo a{display:flex;align-items:center}
.logo-mark{width:30px;height:30px;background:var(--ac);border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;font-size:var(--font-sm);font-weight:var(--fw-black);color:var(--on-ac);transition:opacity var(--t-base)}
.logo a:hover .logo-mark{opacity:.8}
.logo-name{font-size:var(--font-sm);font-weight:var(--fw-bold);letter-spacing:-.3px;color:var(--tx)}
.logo-name em{color:var(--ac);font-style:normal}
.hdr-date{font-size:var(--font-xs);color:var(--mu)}
.lang-switcher{margin-left:auto;display:flex;align-items:center;gap:6px;flex-shrink:0}
.lang-btn{display:flex;align-items:center;gap:5px;padding:var(--space-1) 10px;border-radius:20px;font-size:var(--font-xs);font-weight:var(--fw-semibold);text-decoration:none;border:1px solid transparent;transition:all var(--t-base);white-space:nowrap}
.lang-btn.active{background:var(--ac);color:var(--on-ac);border-color:var(--ac)}
.lang-btn:not(.active){background:rgba(255,255,255,.06);color:var(--mu);border-color:var(--bd)}
.lang-btn:not(.active):hover{background:rgba(255,255,255,.1);color:var(--tx)}
.hdr-update{font-size:var(--font-xs);font-weight:var(--fw-semibold);color:var(--ac);background:rgba(255,180,0,.12);padding:2px 9px;border-radius:20px;border:1px solid rgba(255,180,0,.25)}
.hnav-link{text-decoration:none}
.hnav-link:hover{color:var(--tx)}
.hdr-nav{border-top:1px solid var(--bd);overflow-x:auto;scrollbar-width:none}
.hdr-nav::-webkit-scrollbar{display:none}
.hdr-nav-inner{display:flex;gap:0;max-width:var(--container-max);margin:0 auto;padding:0 24px}
.hnav{
  display:flex;align-items:center;gap:5px;
  padding:var(--space-2) 14px;
  font-size:var(--font-xs);font-weight:var(--fw-medium);color:var(--mu);
  background:none;border:none;cursor:pointer;
  border-bottom:2px solid transparent;
  white-space:nowrap;transition:var(--t-base);user-select:none;
  margin-bottom:-1px;
}
.hnav:hover{color:var(--tx)}
.hnav.on{color:var(--tx);border-bottom-color:var(--ac);font-weight:var(--fw-semibold)}
.hnav[data-f=android].on{border-bottom-color:var(--green);color:var(--green)}
.hnav[data-f=epic].on{border-bottom-color:var(--ac);color:var(--brand-epic)}
.hnav[data-f=steam].on{border-bottom-color:var(--brand-steam);color:var(--brand-steam2)}
.hnav[data-f=itch].on{border-bottom-color:var(--brand-itch);color:var(--brand-itch2)}
.hnav[data-f=software].on{border-bottom-color:var(--brand-software);color:var(--brand-software2)}
.hnav[data-f=xbox].on{border-bottom-color:var(--brand-xbox);color:var(--green)}
.hnav[data-f=psplus].on{border-bottom-color:var(--brand-psplus);color:var(--brand-psplus)}
.hnav[data-f=ios].on{border-bottom-color:var(--brand-ios);color:var(--mu)}
.hnav-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}

/* ── Hero ── */
.hero{padding:28px 0 22px;border-bottom:1px solid var(--bd)}
.hero-eyebrow{font-size:var(--font-xs);font-weight:var(--fw-semibold);color:var(--ac);letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px}
.hero-h1{font-size:32px;font-weight:var(--fw-extrabold);color:#fff;line-height:1.18;letter-spacing:-.8px}
.hero-h1 span{color:var(--ac)}
.hero-sub{font-size:var(--font-sm);color:var(--mu);margin-top: var(--space-2);line-height:1.6}

/* ── Android App Card ── */
.and-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--card-gap);margin-bottom:6px}
.and-card{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);transition:border-color var(--t-base),box-shadow var(--t-base);position:relative}
.and-card:hover{border-color:rgba(132,204,22,.45);box-shadow:var(--shadow-card-hover)}
.and-card a{display:flex;gap:13px;padding:14px 15px;padding-right: var(--space-9);align-items:flex-start;text-decoration:none}
.and-icon{width:58px;height:58px;border-radius:var(--r-lg);object-fit:cover;flex-shrink:0;background:var(--bd);box-shadow:var(--shadow-md)}
.and-icon-ph{width:58px;height:58px;border-radius:var(--r-lg);background:linear-gradient(135deg,var(--bd),var(--bg2));flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:var(--font-xl);font-weight:var(--fw-bold);color:var(--green)}
.and-body{flex:1;min-width:0}
/* App name: bright and bold */
.and-title{font-size:var(--font-sm);font-weight:var(--fw-bold);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--tx);margin-bottom:3px}
/* Developer contrast 4.8:1 */
.and-dev{font-size:var(--font-xs);color:var(--mu);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px}
.and-meta{display:flex;align-items:center;gap:7px;margin-bottom:7px;flex-wrap:wrap}
/* Stars */
.and-rating{font-size:var(--font-xs);color:var(--amber);font-weight:var(--fw-bold);letter-spacing:.01em}
/* Downloads contrast 5.8:1 */
.and-dl{font-size:var(--font-xs);color:var(--ht);background:rgba(255,255,255,.06);padding:2px var(--space-2);border-radius:var(--r-sm);border:1px solid rgba(255,255,255,.1)}
.and-price{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
/* Original price strikethrough contrast 4.5:1 */
.and-orig{font-size:var(--font-xs);color:var(--mu);text-decoration:line-through;text-decoration-thickness:1px}
/* Arrow */
.and-arrow{font-size:var(--font-xs);color:var(--ac-dim)}
/* Free badge: larger and clearer */
.and-free{font-size:var(--font-xs);font-weight:var(--fw-extrabold);color:var(--green);background:rgba(132,204,22,.18);padding:3px 10px;border-radius:5px;border:1px solid rgba(132,204,22,.35)}
/* Deadline contrast 5.0:1 */
.and-until{font-size:var(--font-xs);color:var(--ht);margin-top:6px;display:flex;align-items:center;gap: var(--space-1);font-weight:var(--fw-medium)}
.and-until.urgent{color:var(--red);font-weight:var(--fw-bold)}

/* ── Layout ── */
.wrap{max-width:var(--container-max);margin:0 auto;padding:0 24px}

/* ── Section ── */
.sec{padding:28px 0 8px}
.sec-head{display:flex;align-items:center;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.sec-sub{font-size:var(--font-xs);color:var(--mu);margin:-10px 0 14px;line-height:1.5}
.sec-bar{width:3px;height:17px;border-radius:2px;flex-shrink:0}
.sec-title{font-size:var(--font-lg);font-weight:var(--fw-bold);letter-spacing:-.3px;color:var(--tx)}
.sec-cnt{font-size:var(--font-xs);color:var(--mu)}
.sec-right{margin-left:auto;display:flex;gap: var(--space-2);align-items:center}
.sec-age{font-size:var(--font-xs);color:var(--mu);background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);padding:2px var(--space-2);border-radius:10px}
.sec-divider{border:none;border-top:1px solid var(--bd);margin:4px 0}

/* ── Deals highlight section ── */
.hl-section{padding:24px 0 8px}
.hl-label{font-size:var(--font-xs);font-weight:var(--fw-bold);letter-spacing:.1em;text-transform:uppercase;color:var(--amber);margin-bottom:14px;display:flex;align-items:center;gap: var(--space-2)}
.hl-dot{width:6px;height:6px;border-radius:50%;background:var(--amber);animation:pulse 1.8s ease-in-out infinite}
.hl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap: var(--space-3);margin-bottom:6px}
.hl-card{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);overflow:hidden;transition:border-color var(--t-base),transform var(--t-fast)}
.hl-card:hover{border-color:rgba(245,158,11,.5);transform:translateY(-3px)}
.hl-card a{display:flex;gap:0;flex-direction:column;height:100%}
.hl-media{position:relative;aspect-ratio:16/7;background:var(--bg4);overflow:hidden;flex-shrink:0}
.hl-img{width:100%;height:100%;object-fit:cover;transition:transform var(--t-slow)}
.hl-card:hover .hl-img{transform:scale(1.04)}
.hl-img-ph{width:100%;height:100%;background:var(--bg3)}
.hl-bar{position:absolute;bottom:0;left:0;right:0;height:2px;opacity:.9}
.hl-body{padding:11px 13px;flex:1;display:flex;flex-direction:column;gap:5px}
.hl-top{display:flex;align-items:center;gap:7px}
.hl-badge{font-size:var(--font-xs);font-weight:var(--fw-bold);padding:2px 7px;border-radius:4px}
.hl-lbl{font-size:var(--font-xs);color:var(--mu);font-weight:var(--fw-medium)}
.hl-title{font-size:var(--font-sm);font-weight:var(--fw-bold);line-height:1.35;color:var(--tx);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.hl-desc{font-size:var(--font-xs);color:var(--ht);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hl-foot{display:flex;align-items:center;gap: var(--space-2);margin-top:auto;padding-top: var(--space-1)}
.hl-orig{font-size:var(--font-xs);color:var(--mu);text-decoration:line-through}
.hl-free{font-size:var(--font-xs);color:var(--green);font-weight:var(--fw-extrabold);background:rgba(132,204,22,.18);padding:2px var(--space-2);border-radius:5px;border:1px solid rgba(132,204,22,.3)}
.hl-until{
  font-size:var(--font-xs);font-weight:var(--fw-bold);
  color:var(--ac-dim);margin-left:auto;
  padding:3px 9px;
  background:rgba(230,168,23,.15);
  border:1px solid rgba(230,168,23,.3);
  border-radius:5px;
}
.hl-until.urgent{color:var(--urgent);background:rgba(255,138,61,.12);border-color:rgba(255,138,61,.32)}

/* ── Game card ── */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:11px;margin-bottom:6px}
.grid-wide{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.card{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);overflow:hidden;transition:border-color var(--t-base),transform var(--t-fast)}
.card:hover{border-color:rgba(255,180,0,.5);transform:translateY(-2px)}
.card a{display:block;height:100%}
.card-media{position:relative;aspect-ratio:16/9;background:var(--bg4);overflow:hidden}
.card-wide .card-media{aspect-ratio:2.2/1}
.card-thumb{width:100%;height:100%;object-fit:cover;transition:transform var(--t-slow)}
.card:hover .card-thumb{transform:scale(1.04)}
.card-thumb-ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:var(--font-xs);color:var(--mu)}

/* Source color bar - 3px */
.card-bar{position:absolute;bottom:0;left:0;right:0;height:3px}

/* Badge - opaque, readability first */
.card-badge{
  position:absolute;top:8px;left:8px;
  font-size:var(--font-xs);font-weight:var(--fw-extrabold);
  padding:3px var(--space-2);border-radius:5px;
  letter-spacing:-.1px;
  /* Source badges applied inline via JS */
}

.card-body{padding:10px var(--space-3)}
.card-meta{display:flex;align-items:center;gap:5px;margin-bottom:5px;flex-wrap:wrap}
.card-lbl{font-size:var(--font-xs);color:var(--mu);font-weight:var(--fw-medium)}

/* Original strikethrough + FREE - larger and brighter */
.card-price-wrap{margin-left:auto;display:flex;align-items:center;gap: var(--space-1)}
.card-orig{font-size:var(--font-xs);color:var(--mu);text-decoration:line-through;text-decoration-thickness:1px}
.card-free-txt{font-size:var(--font-xs);font-weight:var(--fw-extrabold);color:var(--green);background:rgba(132,204,22,.18);padding:2px var(--space-2);border-radius:5px;border:1px solid rgba(132,204,22,.3)}

.card-title{font-size:var(--font-sm);font-weight:var(--fw-bold);line-height:1.35;color:var(--tx);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-genre{font-size:var(--font-xs);color:var(--mu);margin-top:3px}
.card-desc{font-size:var(--font-xs);color:var(--ht);margin-top: var(--space-1);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* Countdown - larger and more visible */
.card-until{
  display:inline-flex;align-items:center;gap: var(--space-1);
  font-size:var(--font-xs);font-weight:var(--fw-bold);
  color:var(--ac-dim);
  margin-top: var(--space-2);padding:var(--space-1) 9px;
  background:rgba(230,168,23,.15);
  border:1px solid rgba(230,168,23,.3);
  border-radius:5px;
  width:100%;
}
.card-until::before{content:'⏱';font-size:var(--font-xs)}
.card-until.urgent{
  color:var(--mu);
  background:rgba(255,138,61,.12);
  border-color:rgba(255,138,61,.32);
  
}
.card-until.urgent::before{content:'🔥'}

/* ── Guestbook section ── */
.gb-sec{padding:28px 0 8px;display:none}
.gb-write{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);padding:18px;margin-bottom: var(--space-4);display:none}
.gb-write.open{display:block}
.gb-row{display:flex;gap:10px;margin-bottom:10px}
.gb-row input{flex:1;min-width:0}
.gb-input,.gb-textarea{background:var(--bg3);border:1px solid var(--bd2);border-radius:7px;padding:9px var(--space-3);color:var(--tx);font-size:var(--font-sm);font-family:inherit;width:100%;transition:var(--t-base);resize:none}
.gb-input:focus,.gb-textarea:focus{border-color:var(--ac)}
.gb-input::placeholder,.gb-textarea::placeholder{color:var(--ht)}
.gb-char{text-align:right;font-size:var(--font-xs);color:var(--ht);margin-top:3px}
.gb-btn-row{display:flex;gap: var(--space-2);margin-top:10px;justify-content:flex-end}
.gb-btn-ok{background:var(--ac);color:var(--on-ac);font-size:var(--font-sm);font-weight:var(--fw-semibold);border:none;border-radius:7px;padding:var(--space-2) 18px;cursor:pointer;transition:var(--t-base)}
.gb-btn-ok:hover{opacity:.87}
.gb-btn-cancel{background:var(--bg3);color:var(--mu);font-size:var(--font-sm);border:1px solid var(--bd2);border-radius:7px;padding:var(--space-2) 14px;cursor:pointer}
.gb-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex-wrap:wrap;gap: var(--space-2)}
.gb-head-left{display:flex;align-items:center;gap: var(--space-2)}
.gb-title{font-size:var(--font-sm);font-weight:var(--fw-semibold)}
.gb-count{font-size:var(--font-xs);color:var(--mu)}
.gb-btn-write{display:inline-flex;align-items:center;gap:5px;background:var(--ac);color:var(--on-ac);font-size:var(--font-xs);font-weight:var(--fw-semibold);padding:6px 14px;border-radius:7px;cursor:pointer;border:none}
.gb-alert{padding:9px 13px;border-radius:7px;font-size:var(--font-sm);margin-bottom:10px}
.gb-alert-err{background:rgba(255,107,107,.1);border:1px solid rgba(255,107,107,.25);color:var(--red)}
.gb-alert-ok{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.25);color:var(--green)}
.gb-table{width:100%;border-collapse:collapse}
.gb-table th{font-size:var(--font-xs);color:var(--ht);font-weight:var(--fw-medium);padding:7px 10px;border-bottom:1px solid var(--bd);text-align:left}
.gb-table th.num{width:44px;text-align:center}
.gb-table th.nick{width:90px}
.gb-table th.date{width:80px;text-align:right}
.gb-table th.del{width:38px}
.gb-table td{padding:11px 10px;border-bottom:1px solid var(--bd);vertical-align:top}
.gb-table tr:hover td{background:var(--bg2)}
.gb-num{text-align:center;font-size:var(--font-xs);color:var(--ht)}
.gb-nick{font-size:var(--font-sm);font-weight:var(--fw-semibold);white-space:nowrap}
.gb-msg{font-size:var(--font-sm);color:var(--mu);line-height:1.65;word-break:break-word;margin-top:2px}
.gb-date{font-size:var(--font-xs);color:var(--ht);text-align:right;white-space:nowrap}
.gb-del-btn{background:rgba(255,107,107,.1);border:1px solid rgba(255,107,107,.2);color:var(--red);font-size:var(--font-xs);padding:3px 7px;border-radius:5px;cursor:pointer}
.gb-pager{display:flex;justify-content:center;gap:5px;margin-top:18px;flex-wrap:wrap}
.gb-pager a,.gb-pager span{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;padding:0 7px;border-radius:6px;font-size:var(--font-xs);border:1px solid var(--bd);color:var(--mu);cursor:pointer;transition:var(--t-base);text-decoration:none}
.gb-pager a:hover{border-color:var(--ac);color:var(--ac)}
.gb-pager .cur{background:var(--ac);border-color:var(--ac);color:var(--on-ac);font-weight:var(--fw-bold)}
.gb-admin-bar{display:none;background:rgba(255,107,107,.06);border:1px solid rgba(255,107,107,.18);border-radius:var(--r-md);padding:10px 14px;margin-bottom: var(--space-3);align-items:center;gap: var(--space-2);flex-wrap:wrap}
.gb-admin-bar label{font-size:var(--font-xs);color:var(--red)}
.gb-empty{text-align:center;padding: var(--space-8);color:var(--ht);font-size:var(--font-sm)}
/* ── Epic next week notice ── */
.upcoming-sec{background:linear-gradient(135deg,rgba(255,138,61,.06) 0%,rgba(0,0,0,0) 60%);border:1px solid rgba(255,138,61,.2);border-radius:var(--r);padding:var(--space-5) var(--space-6);margin-bottom:28px}
.upcoming-head{display:flex;align-items:center;gap:10px;margin-bottom: var(--space-4);flex-wrap:wrap}
.upcoming-badge{font-size:var(--font-xs);font-weight:var(--fw-bold);color:var(--urgent);background:rgba(255,138,61,.15);padding:3px 10px;border-radius:20px;border:1px solid rgba(255,138,61,.3);animation:pulse 2s ease-in-out infinite}
.upcoming-title{font-size:var(--font-sm);font-weight:var(--fw-bold);color:var(--tx)}
.upcoming-sub{font-size:var(--font-xs);color:var(--mu);margin-left:auto}
.up-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap: var(--space-3);margin-top: var(--space-3)}
.up-divider{display:flex;align-items:center;gap:10px;margin:20px 0 4px}
.up-divider::before,.up-divider::after{content:'';flex:1;height:1px;background:rgba(255,138,61,.2)}
.up-divider-label{font-size:var(--font-xs);font-weight:var(--fw-bold);color:var(--urgent);background:rgba(255,138,61,.12);padding:3px var(--space-3);border-radius:20px;border:1px solid rgba(255,138,61,.25);white-space:nowrap;animation:pulse 2s ease-in-out infinite}
.up-card{background:var(--bg2);border:1px solid rgba(255,138,61,.2);border-radius:var(--r);overflow:hidden;opacity:.9;transition:var(--t-base)}
.up-card:hover{opacity:1;border-color:rgba(255,138,61,.4)}
.up-thumb{aspect-ratio:16/9;background:var(--bg4);overflow:hidden;position:relative}
.up-thumb img{width:100%;height:100%;object-fit:cover;filter:brightness(.7)}
.up-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.3)}
.up-lock{font-size:var(--font-2xl)}
.up-body{padding:10px var(--space-3)}
.up-when{font-size:var(--font-xs);color:var(--urgent);font-weight:var(--fw-semibold);margin-bottom: var(--space-1)}
.up-name{font-size:var(--font-xs);font-weight:var(--fw-semibold);color:var(--tx);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.up-orig{font-size:var(--font-xs);color:var(--mu);margin-top:3px;text-decoration:line-through}

/* -- (1) Claimed check -- */
.card{position:relative}
.card.got .card-media img,.card.got .card-thumb{opacity:.35;transition:opacity .2s}
.card.got::after{content:'✓ Claimed';position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;font-size:var(--font-lg);font-weight:var(--fw-extrabold);color:var(--green);letter-spacing:.05em;pointer-events:none;z-index:3}
.and-card.got{opacity:.45}
.and-card.got::after{content:'✓ Claimed';position:absolute;inset:0;background:rgba(0,0,0,.5);border-radius:var(--r);display:flex;align-items:center;justify-content:center;font-size:var(--font-sm);font-weight:var(--fw-extrabold);color:var(--green);pointer-events:none;z-index:3}
.check-btn{position:absolute;top:8px;right:8px;z-index:10;width:30px;height:30px;border-radius:50%;border:2px solid rgba(255,255,255,.5);background:rgba(0,0,0,.55);color:#fff;font-size:var(--font-sm);font-weight:var(--fw-bold);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--t-base);backdrop-filter:blur(4px);line-height:1}
.check-btn:hover{border-color:var(--green);color:var(--green);background:rgba(0,0,0,.75)}
.check-btn.on{background:var(--green);border-color:var(--green);color:#000}
.check-bar{display:flex;align-items:center;gap:10px;background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);padding:10px 14px;margin-bottom: var(--space-3);font-size:var(--font-xs);color:var(--mu)}
.check-bar .cb-prog{flex:1;height:5px;background:var(--bg4);border-radius:3px;overflow:hidden}
.check-bar .cb-fill{height:100%;background:var(--green);border-radius:3px;transition:width .4s}
.check-bar .cb-txt{white-space:nowrap;font-size:var(--font-xs);color:var(--green);font-weight:var(--fw-semibold)}

/* ── Check usage hint ── */
.check-guide{display:flex;align-items:flex-start;gap:10px;background:rgba(74,222,128,.06);border:1px solid rgba(74,222,128,.2);border-radius:var(--r);padding:11px 14px;margin-bottom:14px;font-size:var(--font-xs)}
.cg-icon{font-size:var(--font-md);font-weight:var(--fw-bold);color:var(--green);flex-shrink:0;margin-top:1px;width:22px;height:22px;border-radius:50%;border:2px solid var(--green);display:flex;align-items:center;justify-content:center;line-height:1}
.cg-text{flex:1;color:var(--mu);line-height:1.6}
.cg-text strong{color:var(--tx)}
.cg-sample{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:1.5px solid rgba(255,255,255,.4);background:rgba(0,0,0,.5);color:#fff;font-size:var(--font-xs);font-weight:var(--fw-bold);vertical-align:middle;margin:0 2px}
.cg-close{background:none;border:none;color:var(--ht);font-size:var(--font-sm);cursor:pointer;padding:2px 5px;flex-shrink:0;transition:var(--t-base);margin-top:-1px}
.cg-close:hover{color:var(--tx)}

/* ── (2) Savings banner ── */
.savings-banner{background:linear-gradient(135deg,rgba(34,197,94,.08),rgba(74,222,128,.04));border:1px solid rgba(34,197,94,.2);border-radius:var(--r);padding:14px 18px;margin-bottom: var(--space-4);display:flex;align-items:center;gap: var(--space-3);flex-wrap:wrap}
.savings-icon{font-size:var(--font-xl);flex-shrink:0}
.savings-text{flex:1}
.savings-amount{font-size:var(--font-lg);font-weight:var(--fw-extrabold);color:var(--green);line-height:1;margin-bottom:2px}
.savings-sub{font-size:var(--font-xs);color:var(--mu)}
.savings-reset{font-size:var(--font-xs);color:var(--ht);cursor:pointer;padding:var(--space-1) var(--space-2);border:1px solid var(--bd2);border-radius:5px;background:none;white-space:nowrap;transition:var(--t-base)}
.savings-reset:hover{color:var(--tx)}

/* ── (3) Ending soon sticky banner ── */
.urgent-banner{background:linear-gradient(135deg,rgba(255,138,61,.06),rgba(255,138,61,.02));border:1px solid rgba(255,138,61,.22);border-radius:var(--r);padding:14px 18px;margin-bottom: var(--space-5)}
.urgent-head{display:flex;align-items:center;gap: var(--space-2);margin-bottom: var(--space-3)}
.urgent-badge{font-size:var(--font-xs);font-weight:var(--fw-bold);color:var(--urgent);background:rgba(255,138,61,.12);padding:3px 10px;border-radius:20px;border:1px solid rgba(255,138,61,.28)}
.urgent-title{font-size:var(--font-sm);font-weight:var(--fw-semibold);color:#fff}
.urgent-countdown{font-size:var(--font-xs);color:var(--red);margin-left:auto;font-variant-numeric:tabular-nums}
.urgent-list{display:flex;gap:10px;flex-wrap:wrap}
.urgent-item{display:flex;align-items:center;gap: var(--space-2);background:rgba(255,87,87,.08);border:1px solid rgba(255,87,87,.2);border-radius:var(--r-md);padding:var(--space-2) var(--space-3);flex:1;min-width:180px;max-width:300px}
.urgent-item img{width:36px;height:36px;border-radius:5px;object-fit:cover;flex-shrink:0}
.urgent-item-ph{width:36px;height:36px;border-radius:5px;background:var(--bg4);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:var(--font-xs);color:var(--ht)}
.urgent-item-info{flex:1;min-width:0}
.urgent-item-title{font-size:var(--font-xs);font-weight:var(--fw-semibold);color:var(--tx);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.urgent-item-cd{font-size:var(--font-xs);color:var(--red);font-weight:var(--fw-semibold);margin-top:1px;font-variant-numeric:tabular-nums}
.urgent-item a{display:flex;align-items:center;gap: var(--space-2);width:100%;text-decoration:none}

/* ── (4) Game detail modal ── */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:1000;align-items:center;justify-content:center;padding: var(--space-4);backdrop-filter:blur(6px)}
.modal-overlay.open{display:flex}
.modal{background:var(--bg);border:1px solid var(--bd2);border-radius:var(--r-lg);width:100%;max-width:540px;max-height:88vh;overflow-y:auto;position:relative;animation:modalIn .18s ease}
@keyframes modalIn{from{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}
.modal-close{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;background:var(--bd);border:1px solid var(--bg3);color:var(--ht);font-size:var(--font-md);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--t-base);z-index:5}
.modal-close:hover{color:#fff;border-color:var(--ac);background:var(--bd)}
.modal-thumb{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:12px 12px 0 0;display:block}
.modal-thumb-ph{width:100%;aspect-ratio:16/9;background:var(--bg4);border-radius:12px 12px 0 0;display:flex;align-items:center;justify-content:center;font-size:40px}
.modal-body{padding:var(--space-5) 22px var(--space-6)}
.modal-badges{display:flex;align-items:center;gap:7px;margin-bottom:10px;flex-wrap:wrap}
.modal-src-badge{font-size:var(--font-xs);font-weight:var(--fw-bold);padding:3px 9px;border-radius:5px}
.modal-free-badge{font-size:var(--font-xs);font-weight:var(--fw-extrabold);color:var(--green);background:rgba(132,204,22,.18);padding:3px 11px;border-radius:5px;border:1px solid rgba(132,204,22,.35)}
.modal-title{font-size:var(--font-lg);font-weight:var(--fw-extrabold);color:var(--tx);line-height:1.2;margin-bottom:10px;letter-spacing:-.4px}
.modal-desc{font-size:var(--font-sm);color:var(--mu);line-height:1.75;margin-bottom: var(--space-4)}
.modal-meta{display:flex;flex-direction:column;gap:9px;margin-bottom: var(--space-5);background:var(--bg);border:1px solid var(--bd);border-radius:var(--r-md);padding:14px var(--space-4)}
.modal-row{display:flex;gap: var(--space-2);align-items:flex-start;font-size:var(--font-sm)}
.modal-row .mr-key{color:var(--mu);min-width:58px;flex-shrink:0;font-size:var(--font-xs);font-weight:var(--fw-medium);padding-top:1px}
.modal-row .mr-val{color:var(--mu);font-size:var(--font-sm)}
.modal-row .mr-val.urgent{color:var(--red);font-weight:var(--fw-bold)}
.modal-row .mr-price{color:var(--mu);text-decoration:line-through;text-decoration-thickness:1px;margin-right:6px}
.modal-row .mr-free{color:var(--green);font-weight:var(--fw-extrabold)}
.modal-actions{display:flex;gap: var(--space-2)}
.modal-goto{flex:1;background:var(--ac);color:var(--on-ac);border:none;border-radius:9px;padding:14px;font-size:var(--font-sm);font-weight:var(--fw-bold);cursor:pointer;transition:var(--t-base);text-align:center;text-decoration:none;display:block;letter-spacing:-.1px}
.modal-goto:hover{opacity:.87}
.modal-check{width:48px;height:48px;background:var(--bg2);border:1px solid var(--bg3);border-radius:9px;color:var(--ht);font-size:var(--font-lg);cursor:pointer;transition:var(--t-base);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.modal-check:hover{border-color:var(--green);color:var(--green)}
.modal-check.on{background:var(--green);border-color:var(--green);color:#000}

/* ── App rating UI ── */
.app-rating-sec{border-top:1px solid var(--bd2);margin-top:14px;padding-top:14px}
.app-rating-title{font-size:var(--font-xs);font-weight:var(--fw-bold);color:var(--mu);text-transform:uppercase;letter-spacing:.07em;margin-bottom:10px}
.star-row{display:flex;align-items:center;gap: var(--space-1);margin-bottom: var(--space-2)}
.star-btn{font-size:var(--font-xl);cursor:pointer;color:var(--ht);transition:var(--t-fast);background:none;border:none;padding:1px 2px;line-height:1}
.star-btn.on,.star-btn:hover{color:var(--amber);transform:scale(1.15)}
.star-avg{font-size:var(--font-xs);color:var(--mu);margin-left: var(--space-2)}
.star-avg strong{color:var(--amber);font-size:var(--font-sm)}
.star-hint{font-size:var(--font-xs);color:var(--mu);margin-bottom: var(--space-3);min-height:16px}
.react-row{display:flex;gap:7px;flex-wrap:wrap}
.react-btn{display:flex;align-items:center;gap:5px;background:var(--bg3);border:1px solid var(--bd2);border-radius:20px;padding:6px 13px;font-size:var(--font-xs);color:var(--mu);cursor:pointer;transition:var(--t-base);white-space:nowrap}
.react-btn:hover{border-color:var(--ac);color:var(--tx)}
.react-btn.on{border-color:var(--ac);background:rgba(255,180,0,.12);color:var(--tx);font-weight:var(--fw-semibold)}
.react-btn .rc-cnt{font-size:var(--font-xs);color:var(--mu);margin-left:2px}
.react-btn.on .rc-cnt{color:var(--ac)}

/* ── (5) Genre filter tab ── */






/* ── (8) Last week free section ── */
.lastweek-sec{padding:20px 0 8px}
.lastweek-head{display:flex;align-items:center;gap: var(--space-2);margin-bottom:14px}
.lastweek-badge{font-size:var(--font-xs);font-weight:var(--fw-bold);color:var(--mu);background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);padding:2px 9px;border-radius:10px;letter-spacing:.05em}
.lastweek-title{font-size:var(--font-sm);font-weight:var(--fw-semibold);color:var(--mu)}
.lastweek-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap: var(--space-2)}
.lw-card{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r-md);overflow:hidden;opacity:.7;transition:var(--t-base)}
.lw-card:hover{opacity:.9;border-color:var(--bd2)}
.lw-card a{text-decoration:none}
.lw-thumb{aspect-ratio:16/9;overflow:hidden;background:var(--bg4)}
.lw-thumb img{width:100%;height:100%;object-fit:cover;filter:grayscale(.4)}
.lw-body{padding:7px 9px}
.lw-title{font-size:var(--font-xs);font-weight:var(--fw-semibold);color:var(--ht);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.lw-badge{font-size:var(--font-xs);color:var(--mu);margin-top:2px}
.lw-was{font-size:var(--font-xs);color:var(--mu);margin-top:1px;text-decoration:line-through}

/* ── Hero integrated block ── */
.hero-wrap{display:flex;align-items:center;justify-content:space-between;gap: var(--space-6);padding:18px 0 14px;border-bottom:1px solid var(--bd);margin-bottom:14px}
.hero-left{flex:1;min-width:0}
.hero-eyebrow{font-size:var(--font-xs);font-weight:var(--fw-bold);color:var(--ac);letter-spacing:.12em;text-transform:uppercase;margin-bottom: var(--space-2);opacity:.95}
.hero-h1{font-size:32px;font-weight:var(--fw-extrabold);color:#fff;line-height:1.18;letter-spacing:-.8px;margin-bottom: var(--space-2)}
.hero-h1 span{color:var(--ac)}
.hero-savings{font-size:var(--font-xs);color:var(--mu);margin-bottom:5px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.hero-savings strong{color:var(--green);font-size:var(--font-sm)}
.savings-reset-sm{background:none;border:1px solid var(--bd2);color:var(--ht);font-size:var(--font-xs);padding:1px 6px;border-radius:var(--r-sm);cursor:pointer;transition:var(--t-base)}
.savings-reset-sm:hover{color:var(--tx)}
.hero-sub{font-size:var(--font-sm);color:var(--mu);line-height:1.6}
.hero-stats{display:flex;align-items:stretch;background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);flex-shrink:0;overflow:hidden}
.hs-item{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 14px;gap:2px;min-width:60px}
.hs-val{font-size:var(--font-xl);font-weight:var(--fw-extrabold);line-height:1}
.hs-label{font-size:var(--font-xs);color:var(--mu);white-space:nowrap;margin-top:1px}
.hs-divider{width:1px;background:var(--bd);flex-shrink:0;align-self:stretch}

/* Old classes - hidden */
.trust-bar,.savings-banner{display:none!important}
.trust-item,.savings-icon,.savings-text,.savings-amount,.savings-sub,.savings-reset{display:none!important}

.empty{background:var(--bg2);border:1px dashed var(--bd2);border-radius:var(--r);padding: var(--space-7);text-align:center;color:var(--ht);font-size:var(--font-sm)}

/* ── Animation ── */
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}

/* ── Footer ── */
footer{border-top:1px solid var(--bd);padding: var(--space-6);text-align:center;color:var(--ht);font-size:var(--font-xs);line-height:2;margin-top: var(--space-7)}

/* ── Responsive ── */

/* ── Phase 4: 태블릿 breakpoint (641-980px) ── */
@media (max-width:980px) and (min-width:641px){
  .wrap,.hdr-top,.hdr-nav-inner,.hdr-pnav-inner{padding:0 20px}
  .grid,.grid-wide{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:var(--card-gap)}
  .and-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
  .hl-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
  .hero-h1{font-size:var(--font-2xl);line-height:1.2}
  .hs-val{font-size:var(--font-lg)}
  .hs-item{padding:9px 10px}
}

@media(max-width:640px){
  /* Phase 4: 모바일 가독성 향상 — 핵심 11px → 12px */
  .card-lbl,.card-genre,.and-dev,.and-dl,.and-until,.hl-lbl,.sec-cnt{font-size:var(--font-xs)}
  .card-title,.hl-title,.and-title{font-size:var(--font-sm)}
  .card-desc,.hl-desc{font-size:var(--font-sm);line-height:1.55}
  .modal-title{font-size:var(--font-xl)}
  .modal-desc{font-size:var(--font-sm);line-height:1.7}
  .hero-sub{font-size:var(--font-sm);line-height:1.55}
  .sec-sub{font-size:var(--font-sm)}

  .hero-wrap{flex-direction:column;align-items:flex-start;gap:10px;padding:12px 0 10px}
  .hero-h1{font-size:var(--font-2xl);line-height:1.2}
  .hero-stats{width:100%;justify-content:space-around}
  .hs-item{flex:1;padding:var(--space-2) 6px}
  .hs-val{font-size:var(--font-md)}
  .hl-grid{grid-template-columns:1fr}
  .grid,.grid-wide{grid-template-columns:repeat(2,1fr);gap: var(--space-2)}
  .and-grid{grid-template-columns:1fr}
  .hdr-date,.hdr-update{display:none}
  .modal{max-width:100%;border-radius:14px 14px 0 0;position:fixed;bottom:0;left:0;right:0;max-height:85vh}
  .modal-overlay{align-items:flex-end;padding:0}
  .urgent-item{min-width:140px}
  .lastweek-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}
}
@media(max-width:400px){
  .grid,.grid-wide{grid-template-columns:1fr}
}

/* ── Phase 2: Mobile enhancements ── */
@media(max-width:640px){
  /* Hdr nav - horizontal scroll instead of overflow */
  .hdr-nav{position:sticky;top:50px;z-index:90;background:var(--bg);border-bottom:1px solid var(--bd)}
  .hdr-nav-inner{padding:0 12px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap}
  .hdr-nav-inner::-webkit-scrollbar{display:none}
  .hdr-nav-inner button,.hdr-nav-inner a{flex-shrink:0;white-space:nowrap;min-height:var(--btn-h)}
  
  /* Language switcher - larger touch targets */
  .lang-btn{min-height:var(--btn-h-sm);min-width:42px;padding:6px 10px !important;font-size:var(--font-xs) !important;display:inline-flex;align-items:center;justify-content:center}
  
  /* Hero - cleaner mobile layout */
  .hero-h1{font-size:var(--font-2xl);line-height:1.22;letter-spacing:-.5px}
  .hero-h1 br{display:none}
  .hero-h1 span{display:inline}
  .hero-eyebrow{font-size:var(--font-xs);margin-bottom: var(--space-1)}
  .hero-sub{font-size:var(--font-xs);line-height:1.45}
  .hero-savings{font-size:var(--font-xs);gap: var(--space-1);flex-wrap:wrap}
  
  /* Hero stats - more compact on mobile */
  .hero-stats{gap:0;border-radius:8px}
  .hs-item{padding:var(--space-2) 6px;min-width:auto;gap:0}
  .hs-val{font-size:var(--font-md);line-height:1.1}
  .hs-label{font-size:var(--font-xs);margin-top:2px}
  
  /* Touch targets - all interactive elements */
  .g-cta,.btn-submit,.faq-q,.filter-chip,.cat-chip{min-height:42px}
  
  /* Urgent banner - more prominent */
  .urgent-banner{padding:10px var(--space-3);margin:12px 0}
  .urgent-item{padding:10px var(--space-3);font-size:var(--font-xs)}
  .urgent-head{font-size:var(--font-xs);gap:6px;flex-wrap:wrap}
  
  /* Card touch targets */
  .game-card,.nf-card,.app-card{min-height:140px}
  .card-action,.game-check-btn{min-height:36px;min-width:36px}
  
  /* Footer padding */
  footer{padding:var(--space-5) var(--space-4)}

  /* Phase 7-O v2: 모바일 2열 유지 + 카드 상단 여백으로 하트/체크 분리 */
  .and-grid{grid-template-columns:repeat(2,1fr);gap: var(--space-2);min-width:0}
  .and-card{min-width:0;overflow:hidden}
  .and-card a{min-width:0;padding:10px var(--space-3);padding-right:38px;gap:10px}
  .and-icon,.and-icon-ph{width:44px;height:44px;border-radius:10px;flex-shrink:0}
  .and-icon-ph{font-size:var(--font-lg)}
  .and-body{min-width:0}
  .and-title{font-size:var(--font-xs);white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3;max-height:2.6em}
  .and-dev{font-size:var(--font-xs)}
  .and-dl{font-size:var(--font-xs);padding:1px 6px}
  .and-rating{font-size:var(--font-xs)}
  .and-orig{font-size:var(--font-xs)}
  .and-free{font-size:var(--font-xs);padding:2px 7px}
  .and-until{font-size:var(--font-xs);margin-top: var(--space-1)}
  .and-meta{gap:5px;margin-bottom:5px}
  .and-price{gap:5px;flex-wrap:wrap}
  .check-btn{width:28px;height:28px;top:6px;right:6px}

}

@media(max-width:400px){
  .hero-h1{font-size:var(--font-xl);line-height:1.22}
  .hero-stats{padding:2px}
  .hs-item{padding:6px var(--space-1)}
  .hs-val{font-size:var(--font-sm)}
  .hs-label{font-size:var(--font-xs)}
  .hero-wrap{gap:var(--space-2) !important}
  /* Further compress spacing */
  .wrap{padding:0 14px !important}

  .and-card a{padding:9px 10px;padding-right:34px;gap: var(--space-2)}
  .and-icon,.and-icon-ph{width:40px;height:40px}
  .and-title{font-size:var(--font-xs)}
  .and-dev{font-size:var(--font-xs)}
  .and-free{font-size:var(--font-xs);padding:2px 6px}
  .and-until{font-size:var(--font-xs)}

}


/* ──────────────────────────────────────────────────────────
   Phase 6: 체류시간 증가 (카운트다운 + 위시리스트)
   ────────────────────────────────────────────────────────── */

/* Hero urgency copy */
.hero-h1-urgent{color:var(--red);font-weight:var(--fw-bold);font-style:normal;font-size:.74em;letter-spacing:-.3px;display:inline-block}

/* Hero countdown pill (uses existing [data-until] JS ticker) */
.hero-cd{display:inline-flex;align-items:center;gap: var(--space-2);margin:6px 0 4px;padding:5px 11px;background:rgba(255,180,0,.06);border:1px solid rgba(255,180,0,.22);border-radius:20px;font-size:var(--font-xs);max-width:100%}
.hero-cd-label{color:var(--mu);font-weight:var(--fw-medium);white-space:nowrap}
.hero-cd-time{color:var(--red);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;letter-spacing:-.2px}
.hero-cd-time.urgent{color:var(--urgent)}

/* Wishlist heart button on each card (top-left; check-btn stays top-right) */
.wish-btn{position:absolute;top:8px;left:8px;z-index:10;width:30px;height:30px;border-radius:50%;border:2px solid rgba(255,255,255,.5);background:rgba(0,0,0,.55);color:#fff;font-size:var(--font-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--t-base);backdrop-filter:blur(4px);line-height:1;padding:0}
.wish-btn:hover{border-color:var(--wish);background:rgba(0,0,0,.78);transform:scale(1.08)}
.wish-btn.on{background:rgba(255,107,158,.22);border-color:var(--wish);animation:wishPop .28s ease}
@keyframes wishPop{0%{transform:scale(1)}50%{transform:scale(1.28)}100%{transform:scale(1.08)}}

/* Wished card highlight */
.card.wished,.and-card.wished{border-color:var(--wish) !important;box-shadow:var(--shadow-ring-wish)}
.card.wished .card-media::after,.and-card.wished::before{content:'';position:absolute;top:-1px;right:-1px;width:38px;height:38px;background:linear-gradient(225deg,rgba(255,107,158,.45) 0%,rgba(255,107,158,0) 60%);pointer-events:none;z-index:2}
.and-card.wished{position:relative}

/* Floating wishlist counter (fixed bottom-right) */
.wish-float{position:fixed;bottom:22px;right:22px;z-index:900;display:flex;align-items:center;gap:7px;padding:10px var(--space-4);background:linear-gradient(135deg,var(--wish),var(--wish-dim));color:#fff;border:none;border-radius:28px;box-shadow:var(--shadow-glow-pink);cursor:pointer;font-size:var(--font-sm);font-weight:var(--fw-bold);transition:transform .18s,box-shadow .18s}
.wish-float:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow-pink-lg)}
.wish-float-heart{font-size:var(--font-md);line-height:1}
.wish-float-count{font-variant-numeric:tabular-nums;min-width:14px;text-align:center}

@media (max-width:720px){
  .wish-float{bottom:16px;right:16px;padding:9px 14px;font-size:var(--font-sm)}
  .wish-btn{width:26px;height:26px;font-size:var(--font-xs);top:6px;left:6px}
  .hero-cd{font-size:var(--font-xs);padding:var(--space-1) 9px}
  .hero-h1-urgent{font-size:.68em;display:block;margin-top:3px}
}
/* /Phase 6 */




/* ── Phase 6 Polish ── */

/* .hl-card needs relative for wish-btn/check-btn absolute positioning */
.hl-card{position:relative}
/* hl-card wish-btn/check-btn need higher z-index than hl-media */
.hl-card > .wish-btn,.hl-card > .check-btn{z-index:11}

/* Refactored wish-float (div wrapping main button + reset button) */
.wish-float{
  position:fixed;bottom:22px;right:22px;z-index:900;
  display:flex;align-items:stretch;
  border-radius:28px;overflow:hidden;
  box-shadow:var(--shadow-glow-pink);
  transition:transform .18s,box-shadow .18s;
  padding:0;background:none;border:none
}
.wish-float:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow-pink-lg)}

.wish-float-main{
  display:flex;align-items:center;gap:7px;
  padding:10px 14px;
  background:linear-gradient(135deg,var(--wish),var(--wish-dim));color:#fff;
  border:none;cursor:pointer;
  font-size:var(--font-sm);font-weight:var(--fw-bold);font-family:inherit;line-height:1
}

.wish-float-reset{
  display:flex;align-items:center;justify-content:center;
  width:34px;padding:0;
  background:rgba(0,0,0,.18);color:#fff;
  border:none;border-left:1px solid rgba(255,255,255,.28);
  cursor:pointer;
  font-size:var(--font-lg);font-weight:var(--fw-normal);line-height:1;font-family:inherit;
  transition:background var(--t-base)
}
.wish-float-reset:hover{background:rgba(0,0,0,.35)}

/* Re-assert wish-float-heart/count sizing inside the new main button */
.wish-float-main .wish-float-heart{font-size:var(--font-md);line-height:1}
.wish-float-main .wish-float-count{font-variant-numeric:tabular-nums;min-width:14px;text-align:center}

@media (max-width:720px){
  .wish-float{bottom:16px;right:16px}
  .wish-float-main{padding:9px var(--space-3);font-size:var(--font-sm)}
  .wish-float-main .wish-float-heart{font-size:var(--font-md)}
  .wish-float-reset{width:30px;font-size:var(--font-md)}
}
/* /Phase 6 Polish */


/* ── Phase 6-3: Sort + Quick Filter Bar ── */
.sort-filter-bar{
  display:flex;align-items:center;gap: var(--space-2);flex-wrap:wrap;
  padding:10px 14px;margin-bottom:14px;
  background:var(--bg2);border:1px solid var(--bd);
  border-radius:var(--r);font-size:var(--font-xs)
}
.sfb-label{font-size:var(--font-xs);color:var(--mu);font-weight:var(--fw-semibold);letter-spacing:.05em}
.sfb-select{
  background:var(--bg3);color:var(--tx);
  border:1px solid var(--bd2);border-radius:6px;
  padding:5px 10px 5px 10px;font-size:var(--font-xs);cursor:pointer;
  font-family:inherit;transition:border-color var(--t-base)
}
.sfb-select:hover{border-color:var(--ac)}
.sfb-select:focus{border-color:var(--ac);box-shadow:var(--shadow-ring-focus)}

.qf-btn{
  font-size:var(--font-xs);padding:5px 10px;border-radius:var(--r-lg);
  background:var(--bg3);color:var(--mu);
  border:1px solid var(--bd2);cursor:pointer;
  font-family:inherit;font-weight:var(--fw-medium);white-space:nowrap;
  transition:var(--t-base)
}
.qf-btn:hover{border-color:var(--ac);color:var(--tx)}
.qf-btn.on{background:rgba(255,107,158,.15);border-color:var(--wish);color:var(--wish);font-weight:var(--fw-bold)}

.qf-clear{
  margin-left:auto;font-size:var(--font-xs);padding:var(--space-1) 10px;
  background:none;color:var(--ht);border:1px solid var(--bd2);
  border-radius:6px;cursor:pointer;font-family:inherit;
  transition:var(--t-base)
}
.qf-clear:hover{color:var(--tx);border-color:var(--ac)}

/* Filter application: hide cards that don't match active filters.
   Uses !important to override CSS; existing inline display:none from other
   filters (genre/source) still takes precedence (compound filtering works). */
body.filter-urgent-on .card[data-id]:not(.is-urgent),
body.filter-urgent-on .and-card[data-id]:not(.is-urgent),
body.filter-urgent-on .hl-card[data-id]:not(.is-urgent){display:none !important}
body.filter-wished-on .card[data-id]:not(.wished),
body.filter-wished-on .and-card[data-id]:not(.wished),
body.filter-wished-on .hl-card[data-id]:not(.wished){display:none !important}

@media (max-width:720px){
  .sort-filter-bar{padding:var(--space-2) 10px;gap:6px}
  .sfb-label{font-size:var(--font-xs)}
  .sfb-select{padding:var(--space-1) var(--space-2);font-size:var(--font-xs)}
  .qf-btn{font-size:var(--font-xs);padding:var(--space-1) 9px}
  .qf-clear{padding:3px var(--space-2);font-size:var(--font-xs)}
}
/* /Phase 6-3 */




/* ── Phase 6-2C: Real-data badges (NEW / DEADLINE) ── */
.rd-badges{
  display:inline-flex;gap:5px;flex-wrap:wrap;align-items:center;margin-left:6px
}
.card-meta .rd-badges{flex-basis:100%;margin-top: var(--space-1);margin-left:0}
.hl-foot .rd-badges{margin-left: var(--space-2)}
.rd-badge{
  display:inline-flex;align-items:center;
  font-size:var(--font-xs);font-weight:var(--fw-bold);
  padding:2px 7px;border-radius:10px;
  white-space:nowrap;line-height:1.4;
  letter-spacing:-.1px
}
.rd-badge-deadline{
  color:var(--red);background:rgba(255,107,107,.12);
  border:1px solid rgba(255,107,107,.4);
  animation:rd-pulse 1.8s ease-in-out infinite
}
@keyframes rd-pulse{
  0%,100%{box-shadow:var(--shadow-pulse-rest)}
  50%{box-shadow:var(--shadow-pulse-active)}
}
@media (max-width:720px){
  .rd-badge{font-size:var(--font-xs);padding:1px 6px}
}
/* /Phase 6-2C */


/* ── Phase 7: .hero-h1-tag (중립 라벨 — hero-h1-urgent 대체) ── */
.hero-h1-tag{
  font-style:normal;
  font-weight:var(--fw-semibold);
  font-size:.56em;
  color:var(--mu);
  background:rgba(168,156,247,.12);
  border:1px solid rgba(168,156,247,.3);
  padding:3px 10px;
  border-radius:12px;
  margin-left:6px;
  letter-spacing:-.2px;
  vertical-align:middle;
  white-space:nowrap
}
@media (max-width:720px){
  .hero-h1-tag{font-size:.5em;padding:2px var(--space-2)}
}
/* /Phase 7 */


/* NEW 뱃지 부활 (Phase 6-2C 확장) */
.rd-badge-new{color:var(--green);background:rgba(132,204,22,.12);border:1px solid rgba(132,204,22,.35)}

/* Phase 7-H: Primary nav (상단) — 주요 페이지 링크 */
.hdr-pnav{border-bottom:1px solid var(--bd);background:rgba(255,180,0,.03)}
.hdr-pnav-inner{display:flex;gap:0;max-width:var(--container-max);margin:0 auto;padding:0 24px;overflow-x:auto;scrollbar-width:none}
.hdr-pnav-inner::-webkit-scrollbar{display:none}
.hpnav{display:flex;align-items:center;gap:6px;padding:10px var(--space-4);font-size:var(--font-sm);font-weight:var(--fw-semibold);color:var(--tx);text-decoration:none;white-space:nowrap;transition:var(--t-base);border-bottom:2px solid transparent;margin-bottom:-1px}
.hpnav:hover{color:var(--mu);border-bottom-color:rgba(255,180,0,.4);background:rgba(255,180,0,.04)}
.hpnav-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
@media(max-width:640px){
  .hdr-pnav-inner{padding:0 12px}
  .hpnav{padding:9px 11px;font-size:var(--font-xs);gap:5px}
  .hdr-nav-inner{padding:0 12px}
  .hnav{padding:7px 10px;font-size:var(--font-xs)}
}

/* Phase 7-F+: 홈 카드 Metacritic / 리뷰 / 개발사 enrichment */
.card-enrich{display:flex;gap:6px;margin-top:5px;flex-wrap:wrap;align-items:center}
.card-mc{font-size:var(--font-xs);font-weight:var(--fw-extrabold);color:#fff;padding:2px 7px;border-radius:var(--r-sm);text-decoration:none;min-width:22px;text-align:center;display:inline-block;line-height:1.2}
.card-mc:hover{opacity:.85}
.card-reviews{font-size:var(--font-xs);color:var(--mu);white-space:nowrap}
.card-dev{font-size:var(--font-xs);color:var(--ht);font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}
@media(max-width:640px){
  .card-enrich{gap:5px;margin-top: var(--space-1)}
  .card-mc{font-size:var(--font-xs);padding:2px 6px;min-width:20px}
  .card-reviews,.card-dev{font-size:var(--font-xs)}
  .card-dev{max-width:100px}
}

/* 우선순위 6: ITAD "(Store) Giveaway" → 클린 제목 + via 뱃지 */
.card-via{font-size:var(--font-xs);color:var(--ac);margin-top:3px;display:flex;align-items:center;gap: var(--space-1)}
.card-via span{color:var(--mu);font-weight:var(--fw-semibold)}
.hl-via{font-size:var(--font-xs);color:var(--ac);margin-top: var(--space-1);display:flex;align-items:center;gap: var(--space-1)}
.hl-via span{color:var(--mu);font-weight:var(--fw-semibold)}
@media(max-width:640px){
  .card-via{font-size:var(--font-xs);margin-top:2px}
  .hl-via{font-size:var(--font-xs)}
}

/* 우선순위 5: 💎 고가 딜 필터 (data-price-tier="high" 만 표시) */
body.filter-highprice-on .card[data-id]:not([data-price-tier="high"]),
body.filter-highprice-on .and-card[data-id]:not([data-price-tier="high"]),
body.filter-highprice-on .hl-card[data-id]:not([data-price-tier="high"]){display:none !important}

/* Phase 7-F++: highlightCard enrichment (MC / reviews / developer) */
.hl-enrich{display:flex;gap: var(--space-2);margin:6px 0 8px;flex-wrap:wrap;align-items:center}
.hl-mc{font-size:var(--font-sm);font-weight:var(--fw-extrabold);color:#fff;padding:3px 9px;border-radius:5px;text-decoration:none;min-width:26px;text-align:center;display:inline-block;line-height:1.2}
.hl-mc:hover{opacity:.85}
.hl-reviews{font-size:var(--font-sm);color:var(--mu);white-space:nowrap}
.hl-dev{font-size:var(--font-sm);color:var(--mu);font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}
@media(max-width:640px){
  .hl-enrich{gap:6px;margin:5px 0 6px}
  .hl-mc{font-size:var(--font-xs);padding:2px 7px;min-width:24px}
  .hl-reviews,.hl-dev{font-size:var(--font-xs)}
  .hl-dev{max-width:120px}
}

/* ── Phase 7-H: Free-only filter ── */
body.filter-dfree-on .card[data-id]:not(.dfree),
body.filter-dfree-on .and-card[data-id]:not(.dfree),
body.filter-dfree-on .hl-card[data-id]:not(.dfree){display:none !important}
/* /Phase 7-H (filter) */

/* ── Phase 7-H: Discount percentage badge (유료 할인 카드) ── */
.pct-badge{display:inline-block;padding:2px 7px;margin-right:6px;border-radius:var(--r-sm);font-size:var(--font-xs);font-weight:var(--fw-bold);background:rgba(245,158,11,.15);color:var(--amber);border:1px solid rgba(245,158,11,.35);letter-spacing:.02em;white-space:nowrap;vertical-align:middle}
.hl-top .pct-badge{font-size:var(--font-xs);padding:3px var(--space-2)}
@media(max-width:720px){.pct-badge{font-size:var(--font-xs);padding:1px 5px}}
/* /Phase 7-H */


/* ── Phase 7-L (2026-04-22): iOS 사실 기반 카드 (카운트다운 대체) ── */
.ios-card .ios-facts, .and-card .ios-facts{
  margin-top: var(--space-2);padding-top: var(--space-2);
  border-top:1px solid rgba(255,255,255,.08);
  display:flex;flex-direction:column;gap:3px;
}
.ios-card .ios-fact, .and-card .ios-fact{font-size:var(--font-xs);color:var(--mu);line-height:1.4}
.ios-card .ios-badge, .and-card .ios-badge{
  display:inline-block;margin-top:6px;font-size:var(--font-xs);
  padding:2px var(--space-2);border-radius:var(--r-sm);font-weight:var(--fw-semibold);letter-spacing:.02em
}
.ios-card .ios-badge-trust, .and-card .ios-badge-trust{color:var(--green);background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.3)}
.ios-card .ios-badge-ok, .and-card .ios-badge-ok   {color:var(--green);background:rgba(168,181,255,.1);border:1px solid rgba(168,181,255,.25)}
.ios-card .ios-badge-warn, .and-card .ios-badge-warn {color:var(--ac);background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.3)}
.ios-card .ios-rev{color:var(--ht);font-size:var(--font-xs);margin-left:2px}
@media(max-width:640px){
  .ios-card .ios-fact, .and-card .ios-fact{font-size:var(--font-xs)}
  .ios-card .ios-badge, .and-card .ios-badge{font-size:var(--font-xs);padding:1px 6px}
}
/* /Phase 7-L */

/* ═══════════════════════════════════════════════════════════
   Phase 7-O: Unified App Card v2 (iOS + Android 공통 재설계)
   기존 .and-icon, .and-body, .and-meta 등 개별 클래스 대체
   ═══════════════════════════════════════════════════════════ */

/* 최상위 article 의 flex column 구조 */
.and-card > a,
.ios-card > a {
  display: flex;
  flex-direction: column;
  gap: 9px;
  padding: 14px;
  text-decoration: none;
  align-items: stretch;
}

/* ── 상단: 아이콘 + 아이덴티티 (제목/개발자/별점) ── */
.app-card-head {
  display: flex;
  gap: var(--space-3);
  align-items: center;
  min-width: 0;
}

.app-icon,
.app-icon-ph {
  width: 72px;
  height: 72px;
  border-radius: 16px;
  flex-shrink: 0;
  box-shadow: var(--shadow-sticky);
}

.app-icon {
  object-fit: cover;
  background: var(--bd);
}

.app-icon-ph {
  background: linear-gradient(135deg, var(--bd), var(--bg2));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 30px;
  font-weight: var(--fw-extrabold);
  color: var(--green);
}

.app-head-info {
  flex: 1;
  min-width: 0;
  padding-right: 56px;  /* wish + check 버튼 절대 위치 공간 */
}

.app-title {
  font-size:var(--font-sm);
  font-weight: var(--fw-bold);
  line-height: 1.3;
  color: var(--tx);
  margin-bottom: 2px;
  /* 2줄까지 허용 — 모든 뷰포트 공통 (모바일에서 한 글자만 보이는 문제 해결) */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  word-break: break-word;
}

.app-dev {
  font-size:var(--font-xs);
  color: var(--mu);
  margin-bottom: 5px;
  /* 1줄까지 허용 + 긴 개발자명 잘림 */
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  word-break: break-word;
}

.app-genre {
  display: inline-block;
  font-size:var(--font-xs);
  font-weight: var(--fw-semibold);
  color: var(--app-genre-tx);
  background: rgba(251, 191, 36, .1);
  border: 1px solid rgba(251, 191, 36, .35);
  padding: 2px 7px;
  border-radius: var(--r-sm);
  margin-bottom: 5px;
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.4;
  letter-spacing: 0.01em;
}

.app-meta-compact {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  font-size:var(--font-xs);
  line-height: 1;
}

.app-rating {
  color: var(--amber);
  font-weight: var(--fw-bold);
  letter-spacing: .01em;
}

.app-dl-chip {
  padding: 2px 7px;
  background: rgba(168, 168, 200, .1);
  border: 1px solid rgba(168, 168, 200, .2);
  border-radius: var(--r-sm);
  color: var(--ht);
  font-size:var(--font-xs);
  font-weight: var(--fw-semibold);
}

/* ── 중단: 가격 ── */
.app-price-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  font-size:var(--font-sm);
}

.app-orig {
  color: var(--mu);
  text-decoration: line-through;
  text-decoration-thickness: 1px;
  font-size:var(--font-xs);
}

.app-arrow {
  color: var(--ac);
  font-weight: var(--fw-bold);
}

.app-free-pill {
  color: var(--green);
  background: rgba(61, 220, 132, .15);
  border: 1px solid rgba(61, 220, 132, .35);
  border-radius: 6px;
  padding: 2px 9px;
  font-size:var(--font-xs);
  font-weight: var(--fw-bold);
}

/* ── 하단: 상태 메타 (카운트다운 · 업데이트 · 배지) ── */
.app-status-row {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
  font-size:var(--font-xs);
  color: var(--ht);
  padding-top: 7px;
  border-top: 1px dashed rgba(255, 255, 255, .05);
}

.app-countdown {
  color: var(--ht);
  font-weight: var(--fw-medium);
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

.app-countdown.urgent {
  color: var(--red);
  font-weight: var(--fw-bold);
}

.app-fact {
  color: var(--mu);
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

.app-badge {
  padding: 2px var(--space-2);
  border-radius: 10px;
  font-size:var(--font-xs);
  font-weight: var(--fw-bold);
  line-height: 1.4;
  white-space: nowrap;
}

.app-badge-trust { color: var(--green); background: rgba(52, 211, 153, .12); border: 1px solid rgba(52, 211, 153, .3); }
.app-badge-ok    { color: var(--green); background: rgba(168, 181, 255, .1); border: 1px solid rgba(168, 181, 255, .25); }
.app-badge-warn  { color: var(--ac); background: rgba(251, 191, 36, .1); border: 1px solid rgba(251, 191, 36, .3); }

/* ── 모바일 반응형 (Phase 7-O v2: 2열 + 하트/체크 상단 헤더 분리) ── */
@media (max-width: 520px) {
  /* 카드 상단에 하트/체크 전용 여백 (32px) — 그 아래부터 아이콘/제목 시작 */
  .and-card > a, .ios-card > a {
    gap: 6px;
    padding: 34px 10px 10px 10px;
  }

  /* 상단 아이콘 + 제목/장르 */
  .app-card-head { gap: 10px; align-items: flex-start; }
  .app-icon, .app-icon-ph {
    width: 60px; height: 60px;
    font-size:var(--font-xl);
    border-radius: 12px;
  }
  .app-head-info { padding-right: 0; }  /* 체크박스 상단 이동 → padding 제거 */

  /* 제목: 3줄까지 허용, 좁은 공간 최대 활용 */
  .app-title {
    font-size:var(--font-sm);
    font-weight: var(--fw-bold);
    line-height: 1.32;
    white-space: normal;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: initial;
    margin-bottom: var(--space-1);
    word-break: break-word;
    color: var(--tx);
  }

  /* 장르 칩 */
  .app-genre {
    font-size:var(--font-xs);
    padding: 1.5px 7px;
    margin-bottom: var(--space-1);
  }

  /* 별점 + 다운로드 (전체 너비, 아이콘 아래부터) */
  .app-meta-row { gap: 7px; font-size:var(--font-xs); padding-top: 2px; flex-wrap: wrap; }
  .app-rating { font-size:var(--font-xs); font-weight: var(--fw-bold); }
  .app-dl-chip { padding: 1.5px 6px; font-size:var(--font-xs); }

  /* 가격 (전체 너비) */
  .app-price-row { font-size:var(--font-xs); gap: 6px; flex-wrap: wrap; }
  .app-orig { font-size:var(--font-xs); }
  .app-free-pill { font-size:var(--font-xs); padding: 2px var(--space-2); font-weight: var(--fw-bold); }

  /* 상태 (카운트다운 + 업데이트) */
  .app-status-row {
    font-size:var(--font-xs); gap: 6px;
    padding-top: 6px;
    line-height: 1.4;
    flex-wrap: wrap;
  }

  /* 신뢰 배지 (독립 행) */
  .app-badge-row { padding-top: 2px; }
  .app-badge { font-size:var(--font-xs); padding: 2px 7px; font-weight: var(--fw-bold); }

  /* 하트/체크 상단 헤더 영역 (카드 padding-top: 34px 안에) */
  .wish-btn { width: 26px; height: 26px; font-size:var(--font-xs); top: 6px; left: 6px; z-index: 10; }
  .check-btn { width: 26px; height: 26px; font-size:var(--font-xs); top: 6px; right: 6px; z-index: 10; }

  /* .app-dev 는 deprecated (장르 칩으로 대체)이지만 highlightCard 등에서 아직 쓰일 수 있어 유지 */
  .app-dev { font-size:var(--font-xs); line-height: 1.3; margin-bottom: var(--space-1); }
  .app-meta-compact { gap: 6px; font-size:var(--font-xs); }
}

/* 초소형 화면 (iPhone SE 등, ≤ 380px) */
@media (max-width: 380px) {
  .and-card > a, .ios-card > a { padding: var(--space-7) 9px 9px 9px; gap: 5px; }
  .app-icon, .app-icon-ph { width: 52px; height: 52px; font-size:var(--font-lg); border-radius: 11px; }
  .app-card-head { gap: var(--space-2); }
  .app-title { font-size:var(--font-xs); -webkit-line-clamp: 3; }
  .app-genre { font-size:var(--font-xs); padding: 1px 6px; }
  .app-meta-row { font-size:var(--font-xs); gap: 5px; }
  .app-rating { font-size:var(--font-xs); }
  .app-price-row { font-size:var(--font-xs); }
  .app-status-row { font-size:var(--font-xs); }
  .app-dev { font-size:var(--font-xs); }
}


/* Phase 7-O Layout: 별점/다운로드 독립 행 (아이콘 아래) */
.app-meta-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  font-size:var(--font-xs);
  line-height: 1;
}

/* Phase 7-O Layout: 신뢰 배지 독립 행 */
.app-badge-row {
  display: flex;
  align-items: center;
}

/* Phase 7-Y 방어 11 P2-1 (2026-04-29): detail page internal link in modal */
.modal-detail-link{display:block;text-align:center;color:var(--mu);font-size:var(--font-sm);padding: var(--space-2);margin-bottom: var(--space-2);border:1px solid var(--bd);border-radius:var(--r-md);text-decoration:none;transition:var(--t-base)}
.modal-detail-link:hover{color:var(--tx);border-color:var(--ac);background:var(--bg2)}
