/* ==== FoodiePulse：動態海報牆（不改 npl.css 本體，客製都在這） ==== */
:root{
  --m-accent:#C2410C; --m-accent-hi:#EA580C; --m-accent-rgb:194,65,12;
  --npl-w: 1180px;
  --paper:#FFF7EC; --ink:#1C1410;
}
body{ background:var(--paper); color:var(--ink);
  background-image:radial-gradient(rgba(194,65,12,.10) 1.2px, transparent 1.3px); background-size:18px 18px; }

/* 頂部：logo＋品牌色塊膠囊 */
.fp-header{ display:flex; align-items:center; gap:14px; padding:12px 0; flex-wrap:wrap; }
.fp-logo{ display:flex; align-items:center; gap:10px; text-decoration:none; color:inherit; }
.fp-logo img{ height:38px; width:auto; display:block; }
.fp-logo b{ font-size:17px; letter-spacing:.02em; }
.fp-logo small{ display:block; font-size:12px; color:#7C6A5C; font-weight:400; }
.fp-header nav{ margin-left:auto; display:flex; gap:6px; flex-wrap:wrap; }
.fp-header nav a{ font-size:14px; font-weight:700; text-decoration:none; padding:5px 11px; border-radius:999px;
  color:var(--bc,var(--ink)); border:2px solid var(--bc,var(--ink)); background:#fff; transition:transform .15s; }
.fp-header nav a:hover{ transform:translateY(-2px) rotate(-2deg); }
.fp-header nav a.on{ background:var(--bc,var(--ink)); color:#fff; }

/* 海報標題 */
.poster-head{ padding:22px 0 18px; }
.ph-date{ display:inline-block; font-weight:800; font-size:15px; background:var(--ink); color:var(--paper);
  padding:4px 12px; border-radius:6px; transform:rotate(-2deg); }
.ph-date a{ color:inherit; text-decoration:none; }
.poster-head h1{ font-size:clamp(38px,8vw,76px); line-height:1.02; margin:12px 0 10px; font-weight:900; letter-spacing:-.02em; }
.ph-count{ margin:0; font-size:16px; color:#5B4A3E; }
.ph-count b{ font-size:26px; color:var(--m-accent); font-variant-numeric:tabular-nums; }

/* 海報牆 */
.wall{ display:grid; grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr)); grid-auto-rows:190px; grid-auto-flow:dense; gap:14px; }
.tile{ position:relative; min-width:0; display:flex; flex-direction:column; gap:4px; padding:16px 16px 14px; border-radius:18px; overflow:hidden;
  color:var(--bi,#fff); text-decoration:none; isolation:isolate;
  background:linear-gradient(150deg, color-mix(in srgb, var(--bc) 82%, #fff) 0%, var(--bc) 55%, color-mix(in srgb, var(--bc) 70%, #000) 100%);
  box-shadow:0 6px 0 color-mix(in srgb, var(--bc) 55%, #000), 0 14px 26px rgba(60,30,10,.18);
  animation: pop .5s cubic-bezier(.2,1.4,.4,1) both, bob 5s ease-in-out infinite;
  animation-delay: calc(var(--i,0) * 25ms), calc(var(--i,0) * -0.7s); }
.tile::before{ content:""; position:absolute; inset:-40% -20% auto auto; width:70%; aspect-ratio:1; border-radius:50%;
  background:rgba(255,255,255,.13); z-index:-1; }
.tile::after{ content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(115deg, transparent 35%, rgba(255,255,255,.28) 50%, transparent 65%); background-size:250% 100%;
  animation: shine 6s ease-in-out infinite; animation-delay: calc(var(--i,0) * 0.4s); }
.tile:hover{ transform:translateY(-4px) rotate(-1deg); animation-play-state:paused; }
.tile.big{ grid-column:span 2; grid-row:span 2; padding:22px; }
/* 餐點插畫（透明貼紙）：靠右上，字壓在它上面 */
.tile > *{ position:relative; z-index:1; }
.tile > .t-sticker{ position:absolute; z-index:2; }
.tile > .t-art{ position:absolute; z-index:0; right:-4%; top:14%; width:60%; height:auto; max-height:72%; object-fit:contain;
  filter:drop-shadow(0 6px 0 rgba(0,0,0,.16)) drop-shadow(0 10px 18px rgba(0,0,0,.18)); transform:rotate(4deg);
  pointer-events:none; transition:transform .3s cubic-bezier(.2,1.4,.4,1); }
.tile.big > .t-art{ right:-2%; top:8%; width:68%; max-height:70%; }
.tile:hover > .t-art{ transform:rotate(-2deg) scale(1.06); }
.has-art .t-title{ max-width:78%; }
.has-art .t-hook{ white-space:nowrap; }
.t-brand{ font-size:13px; font-weight:800; letter-spacing:.06em; opacity:.95; }
.t-sticker{ position:absolute; top:12px; right:12px; background:#FDE047; color:#1C1410; font-weight:900; font-size:13px;
  padding:4px 9px; border-radius:8px; transform:rotate(6deg); box-shadow:0 2px 0 rgba(0,0,0,.25); }
.is-new .t-sticker{ background:#fff; color:var(--bc); }
.t-hook{ font-size:clamp(30px,3.4vw,40px); font-weight:900; line-height:1.05; margin-top:auto; letter-spacing:-.01em;
  text-shadow:0 3px 0 rgba(0,0,0,.18); font-variant-numeric:tabular-nums; }
.tile.big .t-hook{ font-size:clamp(46px,7vw,84px); }
.t-title{ font-size:15px; font-weight:700; line-height:1.3; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.tile.big .t-title{ font-size:20px; }
.t-meta{ display:flex; gap:8px; align-items:center; font-size:13px; opacity:.95; }
.t-meta b{ font-size:16px; }
.t-meta em{ font-style:normal; background:rgba(0,0,0,.18); padding:2px 8px; border-radius:999px; }
.end-tag.urgent{ background:#FDE047 !important; color:#1C1410; font-weight:800; animation: blink 1.2s steps(2) infinite; }
.more-row{ display:flex; gap:10px; flex-wrap:wrap; margin:18px 0 0; }
.more-row a{ font-weight:800; text-decoration:none; padding:10px 16px; border-radius:12px; background:var(--bc); color:var(--bi,#fff);
  box-shadow:0 4px 0 color-mix(in srgb, var(--bc) 55%, #000); }
.more-row a:hover{ transform:translateY(-2px); }
.brand-block{ margin:34px 0 0; }
.bb-head{ display:flex; align-items:baseline; gap:10px; margin:0 0 12px; padding-bottom:8px; border-bottom:4px solid var(--bc); }
.bb-head h2{ margin:0; font-size:26px; font-weight:900; }
.bb-head h2 a{ color:inherit; text-decoration:none; }
.bb-n{ font-size:14px; color:#7C6A5C; font-weight:700; }
.bb-all{ margin-left:auto; font-weight:800; font-size:14px; text-decoration:none; padding:6px 12px; border-radius:10px;
  background:var(--bc); color:var(--bi,#fff); box-shadow:0 3px 0 color-mix(in srgb, var(--bc) 55%, #000); }
.tile.ended{ filter:grayscale(1); opacity:.5; animation:none; }

@keyframes pop{ from{ opacity:0; transform:scale(.85) rotate(-3deg); } }
@keyframes bob{ 0%,100%{ translate:0 0; } 50%{ translate:0 -5px; } }
@keyframes shine{ 0%,70%{ background-position:150% 0; } 100%{ background-position:-50% 0; } }
@keyframes blink{ 50%{ opacity:.55; } }

/* 單則頁 */
.fp-detail{ max-width:640px; padding-top:16px; }
.fp-detail .tile{ height:340px; animation:pop .5s cubic-bezier(.2,1.4,.4,1) both; }
.fp-offer{ font-size:18px; line-height:1.6; margin:18px 0 12px; }
.fp-actions{ display:flex; gap:10px; flex-wrap:wrap; }
.fp-kv{ display:grid; grid-template-columns:7em 1fr; gap:8px 12px; margin:18px 0; font-size:15px; }
.fp-kv dt{ color:#7C6A5C; } .fp-kv dd{ margin:0; word-break:break-all; }
.fp-banner{ padding:12px 14px; border-radius:10px; background:#FEF2F2; color:#991B1B; border:1px solid #FECACA; margin:12px 0; }

.fp-empty{ text-align:center; padding:48px 16px; color:#7C6A5C; }
.fp-months{ display:flex; gap:8px; flex-wrap:wrap; margin:22px 0 0; font-size:14px; color:#7C6A5C; }
.fp-disclaimer{ font-size:13px; color:#7C6A5C; margin:28px 0 8px; }
.fp-footer{ border-top:1px solid rgba(0,0,0,.1); margin-top:20px; padding:18px 0 40px; font-size:13px; color:#7C6A5C; }
.fp-footer a{ color:#7C6A5C; margin-right:12px; }
.fp-toast{ position:fixed; left:50%; bottom:24px; transform:translateX(-50%); background:#18181B; color:#fff; padding:10px 16px; border-radius:10px; font-size:14px; z-index:50; }

@media (max-width:640px){
  .npl-page{ padding-left:16px; padding-right:16px; }
  .fp-header nav{ margin-left:0; width:100%; overflow-x:auto; flex-wrap:nowrap; padding-bottom:4px; }
  .fp-header nav a{ white-space:nowrap; }
  .wall{ grid-template-columns:repeat(2,minmax(0,1fr)); grid-auto-rows:160px; gap:10px; }
  .tile{ padding:12px; border-radius:14px; }
  .t-hook{ font-size:26px; } .tile.big .t-hook{ font-size:46px; }
  .t-title{ font-size:13px; } .t-meta{ font-size:12px; }
  .fp-logo img{ height:32px; }
}
[hidden]{ display:none !important; }
