<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes, viewport-fit=cover">
<meta name="keywords" content="剧视影视大全,真实电影推荐,在线影视网站,新片预告,经典电影,叮咚影视" />
<meta name="description" content="717电影网97秋霞影院 - 叮咚影视 提供真实欧美大片、国产剧集、高分经典影视信息，高清画质无广告，每日更新不等待。支持预约提醒，打造影迷一站式追剧平台。" />
<title>久碰影视|叮咚影视 - 高清影视电影电视剧免费在线看 | 每日更新热门大片</title>
<style>
  *{margin:0;padding:0;box-sizing:border-box}
  body{background:#0b0c1a;font-family:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;color:#f5f5f0;line-height:1.4;opacity:0;transition:opacity 0.25s ease}
  body.loaded{opacity:1}
  a,button{cursor:pointer;text-decoration:none;color:inherit;background:none;border:none}
  img{display:block;max-width:100%;height:auto;background:#21233d}
  .container{max-width:1400px;margin:0 auto;padding:0 28px}
  @media (max-width:768px){.container{padding:0 18px}}
  header{background:#0a0b1ae6;backdrop-filter:blur(20px);position:sticky;top:0;z-index:100;border-bottom:2px solid #ffb347}
  .nav-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;gap:14px}
  .logo-ham{display:flex;align-items:center;gap:16px}
  .hamburger{display:none;font-size:28px;background:#2a2c4a;width:44px;height:44px;border-radius:30px;align-items:center;justify-content:center;cursor:pointer;color:#ffb347}
  h1{font-size:1.9rem;font-weight:800;background:linear-gradient(125deg,#ffb347,#ff8c42);-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:-0.3px}
  .nav-links{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
  .nav-pill{background:#1f213c;padding:7px 24px;border-radius:60px;font-weight:600;transition:0.2s;border:1px solid #ffb34766;color:#f5f5f0}
  .nav-pill:hover{background:#ffb347;color:#0b0c1a;transform:translateY(-2px)}
  .search-group{display:flex;gap:10px;align-items:center}
  .search-input{padding:8px 20px;border-radius:60px;border:1px solid #3a3d62;background:#151728;color:#f5f5f0;width:220px;outline:none}
  .search-input::placeholder{color:#8e91b0}
  .search-icon,.user-card{background:#1f213c;border-radius:40px;padding:6px 20px;font-weight:500;display:flex;align-items:center;gap:8px;border:1px solid #3a3d62}
  .avatar-img{width:34px;height:34px;background:url('/upload/vod/088-avatar.webp');background-size:cover;border-radius:50%;display:inline-block}
  @media (max-width:768px){
    .hamburger{display:flex}
    .nav-links{position:fixed;top:70px;left:-100%;width:80%;max-width:290px;background:#0f112af2;backdrop-filter:blur(32px);flex-direction:column;align-items:flex-start;padding:32px 24px;gap:24px;border-radius:0 32px 32px 0;transition:0.3s;z-index:200;border-right:2px solid #ffb347}
    .nav-links.show{left:0}
    .desktop-search{display:none}
    .mobile-search-area{display:flex;margin-left:auto;gap:12px}
  }
  .mobile-search-area{display:none}
  .breadcrumb{padding:18px 0 12px;font-size:0.75rem;color:#b5b8d4}
  .hero-area{margin-bottom:48px}
  .hero-wrapper{position:relative;border-radius:44px;overflow:hidden;box-shadow:0 20px 35px -8px rgba(255,179,71,0.2)}
  .hero-track{display:flex;transition:transform 0.5s ease}
  .hero-slide{flex:0 0 100%;position:relative;aspect-ratio:16/7}
  .hero-slide img{width:100%;height:100%;object-fit:cover}
  .hero-caption{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,#0b0c1af0,transparent);padding:1.6rem 2rem}
  .hero-caption h2{font-size:1.8rem;font-weight:700;color:#fff}
  .hero-btn{background:#ff8c42;border:none;padding:8px 28px;border-radius:40px;font-weight:bold;color:#0b0c1a;margin-top:10px;display:inline-block}
  .hero-arrow{position:absolute;top:50%;transform:translateY(-50%);background:#00000099;backdrop-filter:blur(8px);border-radius:50%;width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:30px;cursor:pointer;color:#ffb347}
  .hero-left{left:18px}.hero-right{right:18px}
  .hero-dots{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:12px}
  .dot{width:10px;height:10px;background:#b5b8d4;border-radius:50%;cursor:pointer}
  .dot.active{background:#ffb347;width:24px;border-radius:12px}
  @media (max-width:768px){.hero-caption h2{font-size:1rem}.hero-btn{padding:5px 16px;font-size:0.7rem}}
  .genre-strip{display:flex;flex-wrap:wrap;gap:12px;margin:32px 0 28px}
  .genre-tag{background:#1f213c;padding:8px 28px;border-radius:60px;font-weight:600;transition:0.2s;border:1px solid #ffb34766}
  .genre-tag:hover{background:#ff8c42;color:#0b0c1a;transform:translateY(-3px)}
  .section-title{margin:48px 0 24px 0;font-size:1.8rem;border-left:6px solid #ffb347;padding-left:22px}
  .card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:28px}
  .movie-card{background:#151728;border-radius:28px;overflow:hidden;transition:all 0.25s;position:relative;cursor:pointer;border:1px solid #2c2f50}
  .movie-card:hover{transform:translateY(-6px);box-shadow:0 20px 30px -10px rgba(255,179,71,0.3);border-color:#ffb347}
  .img-holder{position:relative;overflow:hidden;aspect-ratio:2/3;background:#21233d}
  .img-holder img{width:100%;height:100%;object-fit:cover;transition:transform 0.3s}
  .movie-card:hover .img-holder img{transform:scale(1.04)}
  .hover-play{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.6);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;opacity:0;transition:0.2s;backdrop-filter:blur(2px)}
  .movie-card:hover .hover-play{opacity:1}
  .play-circle{background:#ff8c42;width:54px;height:54px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;color:#0b0c1a}
  .update-badge{position:absolute;top:12px;right:12px;background:#ffb347;padding:4px 12px;border-radius:30px;font-size:0.7rem;font-weight:bold;z-index:2;color:#0b0c1a}
  .card-info{padding:14px 12px 12px}
  .card-info h3{font-size:1rem;font-weight:700;margin-bottom:4px}
  .rating{color:#ffb347;font-weight:600}
  .status{font-size:0.7rem;color:#b5b8d4;margin:6px 0}
  .want-btn{background:#1f213c;border:1px solid #3a3d62;padding:8px 0;width:100%;border-radius:60px;font-weight:500;transition:0.2s;cursor:pointer}
  .want-btn:hover{background:#ff8c42;color:#0b0c1a;border-color:#ff8c42}
  .rank-horizontal{display:flex;gap:24px;overflow-x:auto;padding:8px 4px 24px;scrollbar-width:thin}
  .rank-card{flex:0 0 200px;background:#151728;border-radius:32px;padding:18px;text-align:center;cursor:pointer;transition:0.2s;border:1px solid #2c2f50}
  .rank-card:hover{background:#1f213c;transform:translateY(-4px);border-color:#ffb347}
  .rank-medal{font-size:2.3rem;margin-bottom:8px}
  .classic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:28px;margin:32px 0}
  .classic-card{background:#f2e3d4;border-radius:36px;padding:22px;color:#2c241a;border:1px solid #d4b48c;box-shadow:0 12px 20px -8px rgba(0,0,0,0.2),inset 0 1px 2px #fff6ea;cursor:pointer;transition:0.2s}
  .coming-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:30px;margin-bottom:20px}
  .coming-card{background:linear-gradient(145deg,#151728,#0c0d1c);border-radius:38px;padding:24px;text-align:center;cursor:pointer;border:1px solid #ffb34766}
  .days-count{background:#ffb347;display:inline-block;padding:6px 20px;border-radius:40px;font-weight:bold;color:#0b0c1a;margin:14px 0}
  footer{background:#060718;margin-top:70px;padding:44px 0 28px;border-top:1px solid #2c2f50}
  .footer-links{display:flex;gap:40px;flex-wrap:wrap;justify-content:center;margin-bottom:24px}
  .intro-card{background:#151728cc;backdrop-filter:blur(12px);padding:36px 42px;border-radius:52px;margin:52px 0;font-style:italic;border-left:12px solid #ffb347}
  .toast-msg{position:fixed;top:80px;left:50%;transform:translateX(-50%);background:#1f213ce6;backdrop-filter:blur(18px);padding:12px 36px;border-radius:80px;z-index:1200;font-weight:500;opacity:0;transition:0.2s;pointer-events:none;color:#ffb347}
  .modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.88);display:flex;align-items:center;justify-content:center;z-index:1300;visibility:hidden;opacity:0;transition:0.2s}
  .modal-window{background:#151728;max-width:540px;width:90%;border-radius:48px;padding:28px;max-height:85vh;overflow:auto}
  .modal-window img{width:90px;border-radius:20px;margin-bottom:14px}
  button.modal-close{background:#ff8c42;padding:8px 26px;border-radius:40px;color:#0b0c1a}
  @media (max-width:768px){.rank-card{flex:0 0 160px}}
</style>
</head>
<body>
<div class="toast-msg" id="globalToast">功能开发中，即将开放，敬请期待</div>
<div class="modal-overlay" id="modalOverlay"><div class="modal-window" id="modalInner"></div></div>

<header>
  <div class="container">
    <div class="nav-row">
      <div class="logo-ham"><div class="hamburger" id="hamburgerBtn">☰</div><h1>叮咚影视<span style="font-size:0.7rem;"> · 叮咚一下</span></h1></div>
      <div class="nav-links" id="navMenu">
        <a href="#" class="nav-pill" data-type="电影">电影</a>
        <a href="#" class="nav-pill" data-type="电视剧">电视剧</a>
        <a href="#" class="nav-pill" data-type="综艺">综艺</a>
        <a href="#" class="nav-pill" data-type="纪录片">纪录片</a>
        <a href="#" class="nav-pill" data-type="排行榜">排行榜</a>
        <div class="search-group desktop-search"><input type="text" class="search-input" placeholder="搜电影、剧集或导演..." id="desktopSearchInput"><button class="search-icon" id="desktopSearchBtn">🔍</button></div>
      </div>
      <div class="mobile-search-area"><button id="mobileSearchIcon" class="search-icon">🔍</button><div class="user-card" id="mobileAvatar"><span class="avatar-img"></span><span>我</span></div></div>
      <div class="user-card desktop" id="desktopAvatar"><span class="avatar-img"></span><span>个人中心</span></div>
    </div>
    <div class="breadcrumb">首页 > 电影 > 正在热播</div>
  </div>
</header>

<main class="container">
  <div class="hero-area">
    <div class="hero-wrapper">
      <div class="hero-track" id="heroTrack"></div>
      <div class="hero-arrow hero-left" id="heroPrev">‹</div>
      <div class="hero-arrow hero-right" id="heroNext">›</div>
      <div class="hero-dots" id="heroDots"></div>
    </div>
  </div>
  <div class="genre-strip" id="genreStrip"></div>

  <section><h2 class="section-title">🔥 叮咚热映</h2><div class="card-grid" id="hotGrid"></div></section>

  <section><h2 class="section-title">🏆 叮咚飙升榜</h2><div class="rank-horizontal" id="rankList"></div></section>

  <section><h2 class="section-title">🎞️ 经典回声 · 时光留声</h2><div class="classic-grid" id="classicGrid"></div></section>
  <section><h2 class="section-title">⏳ 即将叮咚 · 抢先预约</h2><div class="coming-grid" id="comingGrid"></div></section>
  
  <div class="intro-card"><p>✨ <strong>叮咚影视</strong> 全新<span style="font-weight:600">在线电影</span>畅爽体验，全站<span style="font-weight:600">免费观看</span>，尊享<span style="font-weight:600">高清画质</span>与<span style="font-weight:600">每日更新</span>的视听盛宴，<span style="font-weight:600">无广告</span>纯净沉浸。叮咚影视聚合全球口碑佳作，从院线新作到影史经典，打造影迷专属驿站。本页面展示真实影视作品信息，所有点击跳转及播放功能正在开发中，敬请期待正式版。叮咚影视，叮咚一下，好戏到家。</p></div>
</main>

<footer><div class="container"><div class="footer-links"><a href="#" id="footerAbout">关于我们</a><a href="#" id="footerHelp">帮助中心</a><a href="#" id="footerFriend">友情链接</a><a href="#" id="footerReport">内容投诉</a></div><div style="text-align:center;color:#8e91b0;font-size:0.7rem">© 2026 叮咚影视 侵权必删 | 沪ICP备2026DDYS号</div></div></footer>

<script>
  const toast = document.getElementById('globalToast');
  function showToast(){ toast.style.opacity='1'; setTimeout(()=>{ toast.style.opacity='0'; },2000); }
  const modalMask = document.getElementById('modalOverlay');
  const modalInner = document.getElementById('modalInner');
  function closeModal(){ modalMask.style.visibility='hidden'; modalMask.style.opacity='0'; }
  function openModal(html){ modalInner.innerHTML=html; modalMask.style.visibility='visible'; modalMask.style.opacity='1'; }
  modalMask.addEventListener('click',(e)=>{ if(e.target===modalMask) closeModal(); });

  const hotMovies = [
    {id:1,title:"哥斯拉-1.0",type:"电影",year:2023,dir:"山崎贵",writer:"山崎贵",duration:"125分钟",score:7.9,actors:"神木隆之介",plot:"战后日本直面哥斯拉的绝望与希望。",status:"HD高清",posterNum:"019-movie",updateBadge:true},
    {id:2,title:"利益区域",type:"电影",year:2023,dir:"乔纳森·格雷泽",writer:"乔纳森·格雷泽",duration:"105分钟",score:7.5,actors:"克里斯蒂安·富里道尔",plot:"奥斯维辛指挥官家庭生活的平静与恐怖。",status:"4K蓝光",posterNum:"024-movie",updateBadge:false},
    {id:3,title:"美国小说",type:"电影",year:2023,dir:"柯德·杰弗森",writer:"柯德·杰弗森",duration:"117分钟",score:7.6,actors:"杰弗里·怀特",plot:"一位作家用讽刺小说反抗体制的黑色喜剧。",status:"HD高清",posterNum:"027-movie",updateBadge:false},
    {id:4,title:"可怜的东西",type:"电影",year:2023,dir:"欧格斯·兰斯莫斯",writer:"托尼·麦克纳马拉",duration:"141分钟",score:7.9,actors:"艾玛·斯通",plot:"女性重生与自我探索的奇幻寓言。",status:"HD高清",posterNum:"028-movie",updateBadge:true},
    {id:5,title:"最后生还者",type:"电视剧",year:2023,dir:"克雷格·麦辛",writer:"尼尔·德拉柯曼",duration:"9集",score:9.1,actors:"佩德罗·帕斯卡",status:"全9集",posterNum:"064-tv",updateBadge:true},
    {id:6,title:"三体",type:"电视剧",year:2023,dir:"杨磊",writer:"田良良",duration:"30集",score:8.0,actors:"张鲁一/于和伟",status:"全30集",posterNum:"051-tv",updateBadge:false},
    {id:7,title:"现在就出发2",type:"综艺",year:2024,dir:"李睿",duration:"10期",score:7.9,status:"2025季热播",posterNum:"082-variety",updateBadge:true},
    {id:8,title:"乘风2024",type:"综艺",year:2024,dir:"任洋",duration:"12期",score:7.6,status:"2024季完结",posterNum:"073-variety",updateBadge:false}
  ];
  const classicList = [
    {title:"教父",year:1972,country:"美国",director:"弗朗西斯·福特·科波拉",score:9.2,desc:"黑帮史诗，家族与权力的悲歌。",tag:"影史神作",posterNum:"005-movie"},
    {title:"罗马假日",year:1953,country:"美国/意大利",director:"威廉·惠勒",score:9.0,desc:"安妮公主与记者的浪漫一日。",tag:"必看经典",posterNum:"008-movie"},
    {title:"七武士",year:1954,country:"日本",director:"黑泽明",score:9.3,desc:"武士精神与农民保卫战。",tag:"高分封神",posterNum:"011-movie"},
    {title:"天使爱美丽",year:2001,country:"法国",director:"让-皮埃尔·热内",score:8.7,desc:"孤独女孩的温暖童话。",tag:"催泪神片",posterNum:"018-movie"}
  ];
  const comingSoon = [
    {title:"阿凡达3：火与烬",days:32,year:2025,desc:"潘多拉全新冒险",posterNum:"058-movie"},
    {title:"封神第二部",days:26,year:2025,desc:"西岐大战魔将",posterNum:"069-movie"},
    {title:"死侍3",days:13,year:2024,desc:"狼贱合体颠覆多元宇宙",posterNum:"077-movie"}
  ];
  const rankItems = [
    {title:"哥斯拉-1.0",hot:"387.2万",score:7.9,posterNum:"019-movie",dir:"山崎贵",plot:"战后巨兽",year:2023},
    {title:"最后生还者",hot:"362.5万",score:9.1,posterNum:"064-tv",dir:"克雷格·麦辛",plot:"末世求生",year:2023},
    {title:"利益区域",hot:"298.3万",score:7.5,posterNum:"024-movie",dir:"乔纳森·格雷泽",plot:"奥斯维辛日常",year:2023},
    {title:"三体",hot:"276.1万",score:8.0,posterNum:"051-tv",dir:"杨磊",plot:"科幻史诗",year:2023},
    {title:"美国小说",hot:"243.7万",score:7.6,posterNum:"027-movie",dir:"柯德·杰弗森",plot:"黑色讽刺",year:2023}
  ];

  function buildModalContent(item){
    let poster = `/upload/vod/${item.posterNum || '001-movie'}.webp`;
    let typeInfo = item.type || (item.year?"电影":"经典");
    let dirInfo = item.dir || item.director || "传奇导演";
    let writerInfo = item.writer || "经典编剧";
    let durationInfo = item.duration || (item.desc?"约120分钟":"全长作品");
    let plotText = item.plot || item.desc || "本片为影史经典，值得反复品味。";
    let actorsHtml = item.actors ? `<p><strong>主演：</strong>${item.actors}</p>` : "";
    return `<div style="display:flex;gap:18px;flex-wrap:wrap"><img src="${poster}" alt="${item.title}" style="width:100px;border-radius:20px"><div><h3>《${item.title}》</h3><p><strong>类型：</strong>${typeInfo}</p><p><strong>年份：</strong>${item.year}</p><p><strong>导演：</strong>${dirInfo}</p><p><strong>编剧：</strong>${writerInfo}</p><p><strong>时长/集数：</strong>${durationInfo}</p><p><strong>评分：</strong>⭐ ${item.score}</p>${actorsHtml}<p><strong>简介：</strong>${plotText}</p></div></div><div style="display:flex;gap:20px;justify-content:flex-end;margin-top:28px"><button class="modal-close" id="modalCloseBtn">关闭</button><button id="modalDevBtn" class="want-btn" style="width:auto;padding:8px 32px">前往观看（开发中）</button></div>`;
  }
  function attachCardClick(card,data){
    card.addEventListener('click',(e)=>{
      if(e.target.classList.contains('want-btn')||e.target.closest('.want-btn')) return;
      e.preventDefault();
      openModal(buildModalContent(data));
      document.getElementById('modalCloseBtn')?.addEventListener('click',closeModal);
      document.getElementById('modalDevBtn')?.addEventListener('click',(ev)=>{ ev.preventDefault(); showToast(); });
    });
  }
  function renderHot(){
    const container = document.getElementById('hotGrid');
    container.innerHTML='';
    hotMovies.forEach(m=>{
      let poster=`/upload/vod/${m.posterNum}.webp`;
      let card=document.createElement('div'); card.className='movie-card';
      card.innerHTML=`<div class="img-holder"><img loading="lazy" src="${poster}" alt="${m.title} ${m.type} ${m.year} ${m.dir||''}"><div class="hover-play"><div class="play-circle">▶</div><span>立即观看</span></div>${m.updateBadge?'<div class="update-badge">更新</div>':''}</div><div class="card-info"><h3>${m.title}</h3><div class="rating">⭐ ${m.score}</div><div class="status">${m.status}</div><button class="want-btn">想看/预约</button></div>`;
      attachCardClick(card,m);
      card.querySelector('.want-btn').addEventListener('click',(e)=>{ e.stopPropagation(); showToast(); });
      container.appendChild(card);
    });
  }
  function renderClassic(){
    const grid=document.getElementById('classicGrid'); grid.innerHTML='';
    classicList.forEach(c=>{
      let poster=`/upload/vod/${c.posterNum}.webp`;
      let div=document.createElement('div'); div.className='classic-card';
      div.innerHTML=`<div style="display:flex;gap:14px"><img src="${poster}" style="width:70px;border-radius:18px" loading="lazy"><div><h3>${c.title}</h3><div>${c.year} · ${c.country}</div><div class="rating">⭐ ${c.score}</div><div style="background:#d4b48c;display:inline-block;padding:2px 14px;border-radius:40px;font-size:0.7rem">${c.tag}</div></div></div><p style="margin-top:12px">${c.desc}</p>`;
      div.addEventListener('click',()=>{ openModal(buildModalContent({...c,type:"经典电影",director:c.director,plot:c.desc,score:c.score,posterNum:c.posterNum})); document.getElementById('modalCloseBtn')?.addEventListener('click',closeModal); document.getElementById('modalDevBtn')?.addEventListener('click',(e)=>{e.preventDefault();showToast();}); });
      grid.appendChild(div);
    });
  }
  function renderComing(){
    const grid=document.getElementById('comingGrid'); grid.innerHTML='';
    comingSoon.forEach(c=>{
      let poster=`/upload/vod/${c.posterNum}.webp`;
      let card=document.createElement('div'); card.className='coming-card';
      card.innerHTML=`<img src="${poster}" loading="lazy" style="border-radius:32px;margin-bottom:12px"><h3>${c.title}</h3><div class="days-count">${c.days}天后上映</div><p>${c.desc}</p><button class="want-btn" style="margin-top:14px">预约提醒</button>`;
      card.addEventListener('click',(e)=>{ if(e.target.classList.contains('want-btn')){ e.stopPropagation(); showToast(); return; } openModal(buildModalContent({...c,type:"电影",score:"敬请期待",plot:c.desc,status:`${c.days}天后上映`,dir:"待定"})); document.getElementById('modalCloseBtn')?.addEventListener('click',closeModal); document.getElementById('modalDevBtn')?.addEventListener('click',(e2)=>{e2.preventDefault();showToast();}); });
      card.querySelector('.want-btn')?.addEventListener('click',(e)=>{ e.stopPropagation(); showToast(); });
      grid.appendChild(card);
    });
  }
  function renderRank(){
    const container = document.getElementById('rankList');
    container.innerHTML='';
    rankItems.forEach((r,idx)=>{
      let medal= idx===0?'🥇':idx===1?'🥈':idx===2?'🥉':`${idx+1}.`;
      let card=document.createElement('div'); card.className='rank-card';
      card.innerHTML=`<div class="rank-medal">${medal}</div><div><strong>${r.title}</strong></div><div class="rating">⭐ ${r.score}</div><div>🔥 ${r.hot}</div>`;
      card.addEventListener('click',()=>{ openModal(buildModalContent({...r,type:"影视",director:r.dir,plot:r.plot,score:r.score,posterNum:r.posterNum})); document.getElementById('modalCloseBtn')?.addEventListener('click',closeModal); document.getElementById('modalDevBtn')?.addEventListener('click',(e)=>{e.preventDefault();showToast();}); });
      container.appendChild(card);
    });
  }
  function renderGenres(){
    const genres=['动作','喜剧','爱情','科幻','悬疑','恐怖','剧情','冒险'];
    const strip=document.getElementById('genreStrip');
    genres.forEach(g=>{ let tag=document.createElement('div'); tag.className='genre-tag'; tag.innerText=g; tag.onclick=()=>showToast(); strip.appendChild(tag); });
  }

  const heroSlides = [
    {title:"哥斯拉-1.0",desc:"战后日本 巨兽降临",img:"009-banner"},
    {title:"利益区域",desc:"奥斯维辛的沉默恐怖",img:"010-banner"},
    {title:"最后生还者",desc:"末世求生 口碑封神",img:"011-banner"}
  ];
  let heroIdx=0;
  function updateHero(idx){
    const slides=document.querySelectorAll('.hero-slide');
    slides.forEach((s,i)=>{ s.style.display=i===idx?'block':'none'; });
    const dots=document.querySelectorAll('.dot');
    dots.forEach((d,i)=>{ if(i===idx) d.classList.add('active'); else d.classList.remove('active'); });
  }
  function renderHero(){
    const track=document.getElementById('heroTrack');
    const dotsContainer=document.getElementById('heroDots');
    heroSlides.forEach((s,i)=>{
      const slideDiv=document.createElement('div'); slideDiv.className='hero-slide'; slideDiv.style.display=i===0?'block':'none';
      slideDiv.innerHTML=`<img src="/upload/vod/${s.img}.webp" alt="${s.title}"><div class="hero-caption"><h2>${s.title}</h2><p>${s.desc}</p><button class="hero-btn hero-watch">立即观看</button></div>`;
      slideDiv.querySelector('.hero-watch').onclick=(e)=>{ e.stopPropagation(); showToast(); };
      track.appendChild(slideDiv);
      const dot=document.createElement('div'); dot.className=`dot ${i===0?'active':''}`; dot.addEventListener('click',()=>{ heroIdx=i; updateHero(heroIdx); resetTimer(); }); dotsContainer.appendChild(dot);
    });
    let autoTimer=setInterval(()=>{ heroIdx=(heroIdx+1)%heroSlides.length; updateHero(heroIdx); },4000);
    function resetTimer(){ clearInterval(autoTimer); autoTimer=setInterval(()=>{ heroIdx=(heroIdx+1)%heroSlides.length; updateHero(heroIdx); },4000); }
    document.getElementById('heroPrev').onclick=()=>{ heroIdx=(heroIdx-1+heroSlides.length)%heroSlides.length; updateHero(heroIdx); resetTimer(); };
    document.getElementById('heroNext').onclick=()=>{ heroIdx=(heroIdx+1)%heroSlides.length; updateHero(heroIdx); resetTimer(); };
  }
  function initUI(){
    document.querySelectorAll('.nav-pill').forEach(btn=>{ btn.onclick=(e)=>{ e.preventDefault(); showToast(); }; });
    document.getElementById('desktopSearchBtn')?.addEventListener('click',()=>showToast());
    document.getElementById('mobileSearchIcon')?.addEventListener('click',()=>{ let val=prompt("输入搜索内容"); if(val!==null) showToast(); else showToast(); });
    document.getElementById('desktopAvatar')?.addEventListener('click',()=>showToast());
    document.getElementById('mobileAvatar')?.addEventListener('click',()=>showToast());
    const hamburger=document.getElementById('hamburgerBtn');
    const navPanel=document.getElementById('navMenu');
    hamburger.onclick=()=>{ navPanel.classList.toggle('show'); };
    document.getElementById('footerAbout').onclick=(e)=>{ e.preventDefault(); openModal(`<div><h3>关于叮咚影视</h3><p>叮咚影视成立于2023年，致力于提供真实影视资源与纯净观影体验。商务合作：dingdong@ddmovie.com</p><button class="modal-close" id="closeAbout">关闭</button></div>`); document.getElementById('closeAbout')?.addEventListener('click',closeModal); };
    document.getElementById('footerHelp').onclick=(e)=>{ e.preventDefault(); openModal(`<div><h3>帮助中心</h3><p>常见问题：播放功能开发中，预约成功后我们将通知。客服邮箱 help@ddmovie.com</p><button class="modal-close" id="closeHelp">关闭</button></div>`); document.getElementById('closeHelp')?.addEventListener('click',closeModal); };
    document.getElementById('footerFriend').onclick=(e)=>{ e.preventDefault(); openModal(`<div><h3>友情链接</h3><p>影迷社区 | 新片推荐 | 合作联系 friend@ddmovie.com</p><button class="modal-close" id="closeFriend">关闭</button></div>`); document.getElementById('closeFriend')?.addEventListener('click',closeModal); };
    document.getElementById('footerReport').onclick=(e)=>{ e.preventDefault(); openModal(`<div><h3>内容投诉</h3><p>侵权反馈：copyright@ddmovie.com，我们将在24h内处理。</p><button class="modal-close" id="closeReport">关闭</button></div>`); document.getElementById('closeReport')?.addEventListener('click',closeModal); };
  }
  renderHero(); renderGenres(); renderHot(); renderClassic(); renderComing(); renderRank(); initUI();
  document.body.classList.add('loaded');
</script>
</body>
</html>