/* ReelRate — light theme, Web Route navy + gold */
:root{
  --navy:#0B2A4A;--deep:#06172B;--mid:#10375F;--gold:#F2B632;--gold-soft:#FFD26E;--gold-ink:#8A5F00;
  --bg:#F5F7FB;--surface:#fff;--line:#E2E8F1;--line-2:#CBD5E3;--text:#10243B;--muted:#5A6B80;
  --green:#12804A;--red:#C0334B;
  --r-sm:10px;--r:16px;--r-lg:24px;
  --sh-1:0 1px 2px rgba(11,42,74,.06),0 4px 14px rgba(11,42,74,.06);
  --sh-2:0 2px 4px rgba(11,42,74,.08),0 16px 36px rgba(11,42,74,.14);
  --ease:cubic-bezier(.2,.8,.2,1);
  --font:-apple-system,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --gutter:clamp(16px,4vw,28px);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body.vn-page{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font:16px/1.55 var(--font);-webkit-font-smoothing:antialiased}
img{max-width:100%}
a{color:#0B5CAD;text-decoration:none}a:hover{text-decoration:underline}
.skip{position:absolute;left:-999px;top:8px;background:var(--navy);color:#fff;padding:8px 14px;border-radius:8px;z-index:100}.skip:focus{left:8px}
.small{font-size:13px}
.vn-sub{color:var(--muted)}
.vn-gold{color:var(--gold-ink)}
.star{color:#E7A400}
.vn-heart{color:#E11D48}
.vn-wrap{max-width:1180px;margin:0 auto;padding:26px var(--gutter) 70px}
.vn-h1{font-size:clamp(26px,4.4vw,36px);line-height:1.15;margin:6px 0 6px;letter-spacing:-.02em;font-weight:800;color:var(--navy)}
.vn-h2{font-size:21px;margin:34px 0 14px;font-weight:800;letter-spacing:-.01em;color:var(--navy)}
.vn-label{display:block;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:16px 0 6px;font-weight:700}
h3,h4{color:var(--navy)}

/* header */
.vn-topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.92);border-bottom:1px solid var(--line)}
.vn-topbar::before{content:"";position:absolute;inset:0;z-index:-1;backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px)}
.vn-topbar-in{max-width:1180px;margin:0 auto;padding:10px var(--gutter);display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:21px;color:var(--navy);letter-spacing:-.01em}
.brand b{color:#D99A00}.brand:hover{text-decoration:none}
.vn-logo{width:34px;height:34px;border-radius:50%;box-shadow:0 0 0 2px rgba(242,182,50,.7);object-fit:cover}
.vn-nav{display:flex;gap:2px}
.vn-nav a{color:var(--muted);padding:8px 13px;border-radius:999px;font-weight:600;font-size:14.5px;transition:background .15s,color .15s}
.vn-nav a:hover,.vn-nav a.on{background:#EAF0F9;color:var(--navy);text-decoration:none}
.navsearch{flex:1 1 220px;max-width:360px;margin-left:auto}
.navsearch .vn-input{padding:9px 16px;border-radius:999px;background:#EEF2F8;border-color:transparent}
.navsearch .vn-input:focus{background:#fff}
.acct{display:flex;align-items:center;gap:8px}
.who{font-weight:700;color:var(--navy);font-size:14px}

/* buttons & forms */
.vn-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;font:700 14.5px var(--font);padding:11px 20px;border-radius:999px;background:var(--gold);color:var(--deep);box-shadow:0 6px 16px rgba(242,182,50,.35);transition:transform .12s var(--ease),filter .15s,box-shadow .15s}
.vn-btn:hover{filter:brightness(1.05);text-decoration:none;transform:translateY(-1px)}
.vn-btn:active{transform:translateY(0)}
.vn-btn:focus-visible,.vn-input:focus-visible,.vn-select:focus-visible{outline:3px solid rgba(11,92,173,.45);outline-offset:2px}
.vn-btn--ghost{background:#fff;color:var(--navy);border:1px solid var(--line-2);box-shadow:none}
.vn-btn--ghost:hover{border-color:var(--navy);background:#fff}
.vn-btn--danger{background:#fff;color:var(--red);border:1px solid #F1C0C9;box-shadow:none}
.vn-btn--sm{padding:7px 14px;font-size:13px}
.vn-btn--big{padding:14px 26px;font-size:16px}
a.vn-btn,a.vn-btn:hover{color:var(--deep)}a.vn-btn--ghost,a.vn-btn--ghost:hover{color:var(--navy)}
.vn-input,.vn-select,.vn-textarea{width:100%;background:#fff;border:1px solid var(--line-2);color:var(--text);border-radius:12px;padding:11px 14px;font:inherit}
.vn-input::placeholder{color:#8392A6}
textarea.vn-input{resize:vertical}
.vn-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1)}
.vn-flash{padding:12px 16px;border-radius:12px;margin:0 0 14px;font-weight:600;border:1px solid}
.vn-flash--ok{background:#E8F7EF;border-color:#A8DEC2;color:#0C6B3D}
.vn-flash--bad{background:#FDECEF;border-color:#F3B9C3;color:#9C2238}
.flashwrap{padding-top:18px;padding-bottom:0}
.vn-note{background:#FFF7E0;border:1px solid #F2D78A;color:#6B4C00;border-radius:12px;padding:12px 16px}
.vn-chip{display:inline-block;font-size:12px;font-weight:700;padding:2px 10px;border-radius:999px;background:#EEF2F8;color:var(--navy)}
.vn-chip--ok{background:#E8F7EF;color:#0C6B3D}.vn-chip--bad{background:#FDECEF;color:#9C2238}
.vn-tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:#fff}
.vn-table{border-collapse:collapse;width:100%;font-size:14px}
.vn-table th{text-align:left;padding:10px 14px;background:#F0F4FA;color:var(--muted);font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.vn-table td{padding:10px 14px;border-top:1px solid var(--line)}

/* ========== HOME ========== */
.home-main{padding:0}
.hero{position:relative;overflow:hidden;background:linear-gradient(135deg,#fff 0%,#EDF3FC 55%,#FFF4D6 100%);border-bottom:1px solid var(--line)}
.hero::before{content:"";position:absolute;right:-120px;top:-140px;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(242,182,50,.35),rgba(242,182,50,0) 68%)}
.hero::after{content:"";position:absolute;left:-160px;bottom:-220px;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(11,92,173,.12),rgba(11,92,173,0) 70%)}
.hero-in{position:relative;z-index:1;max-width:1180px;margin:0 auto;padding:clamp(34px,6vw,76px) var(--gutter);display:grid;grid-template-columns:1.1fr .9fr;gap:36px;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-ink);background:#FFF1C7;border-radius:999px;padding:5px 12px}
.hero h1{font-size:clamp(34px,6vw,62px);line-height:1.04;letter-spacing:-.035em;margin:16px 0 14px;color:var(--navy);font-weight:850}
.hero h1 em{font-style:normal;background:linear-gradient(transparent 62%,var(--gold-soft) 62%)}
.hero p.lead{font-size:clamp(16px,2vw,19px);color:var(--muted);max-width:520px;margin:0 0 24px}
.herosearch{display:flex;gap:8px;background:#fff;border:1px solid var(--line-2);border-radius:999px;padding:6px;box-shadow:var(--sh-2);max-width:540px}
.herosearch input{flex:1;border:0;background:transparent;padding:10px 16px;font:inherit;color:var(--text);min-width:0;outline:0}
.herostats{display:flex;gap:26px;flex-wrap:wrap;margin-top:26px}
.herostats div b{display:block;font-size:24px;color:var(--navy);line-height:1.1}
.herostats div span{font-size:13px;color:var(--muted)}
.fan{position:relative;height:clamp(300px,38vw,430px)}
.fan .mcard{position:absolute;width:40%;box-shadow:var(--sh-2);transition:transform .35s var(--ease)}
.fan .mcard:nth-child(1){left:0;top:12%;transform:rotate(-8deg)}
.fan .mcard:nth-child(2){left:30%;top:0;z-index:2;transform:rotate(1deg)}
.fan .mcard:nth-child(3){left:60%;top:16%;transform:rotate(9deg)}
.fan:hover .mcard:nth-child(1){transform:rotate(-11deg) translateX(-10px)}
.fan:hover .mcard:nth-child(3){transform:rotate(12deg) translateX(10px)}
.fan .mmeta{display:none}
.section{max-width:1180px;margin:0 auto;padding:36px var(--gutter) 0}
.sechead{display:flex;align-items:end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:6px}
.sechead h2{margin:0;font-size:clamp(22px,3vw,28px);letter-spacing:-.02em;color:var(--navy)}
.sechead p{margin:2px 0 0;color:var(--muted)}
.seelink{font-weight:700;font-size:14px}
.tabbar{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0 18px;padding:5px;background:#E9EEF6;border-radius:999px;width:max-content;max-width:100%;overflow-x:auto}
.tabbar button{border:0;background:transparent;font:700 14px var(--font);color:var(--muted);padding:8px 18px;border-radius:999px;cursor:pointer;white-space:nowrap}
.tabbar button:hover{color:var(--navy)}
.tabbar button[aria-selected=true]{background:#fff;color:var(--navy);box-shadow:var(--sh-1)}
.tabbar button:focus-visible{outline:3px solid rgba(11,92,173,.45)}
.panel[hidden]{display:none}
.empty{padding:26px;border:1px dashed var(--line-2);border-radius:var(--r);background:#fff;color:var(--muted);text-align:center}
.genre-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:14px}
.gtile{position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:92px;padding:14px 16px;border-radius:var(--r);color:#fff;background:linear-gradient(135deg,var(--a),var(--b));overflow:hidden;transition:transform .15s var(--ease),box-shadow .15s}
.gtile:hover{transform:translateY(-3px);box-shadow:var(--sh-2);text-decoration:none}
.gtile::after{content:"";position:absolute;right:-18px;top:-18px;width:80px;height:80px;border-radius:50%;background:rgba(255,255,255,.14)}
.gtile b{font-size:17px;position:relative;z-index:1}.gtile span{font-size:12px;opacity:.85;position:relative;z-index:1}
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:16px}
.feature{padding:22px;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1)}
.feature .ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:22px;background:#FFF1C7;margin-bottom:12px}
.feature h3{margin:0 0 6px;font-size:18px}.feature p{margin:0;color:var(--muted);font-size:15px}
.cta{margin:46px auto 0;max-width:1180px;padding:0 var(--gutter)}
.cta-in{background:linear-gradient(135deg,var(--navy),var(--mid));color:#fff;border-radius:var(--r-lg);padding:clamp(26px,5vw,48px);display:flex;gap:22px;align-items:center;justify-content:space-between;flex-wrap:wrap;position:relative;overflow:hidden}
.cta-in::after{content:"";position:absolute;right:-60px;top:-60px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,rgba(242,182,50,.45),rgba(242,182,50,0) 70%)}
.cta-in h2{margin:0 0 4px;font-size:clamp(22px,3.4vw,32px);color:#fff;letter-spacing:-.02em}
.cta-in p{margin:0;color:#C9D6E6}
.cta-in .vn-btn{position:relative;z-index:1}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 18px}
.tabs a{padding:7px 16px;border-radius:999px;border:1px solid var(--line-2);background:#fff;color:var(--muted);font-weight:700;font-size:14px}
.tabs a.on,.tabs a:hover{border-color:var(--navy);color:var(--navy);text-decoration:none}
.tabs a.on{background:var(--navy);color:#fff}

/* cards */
.row-scroll{display:grid;grid-auto-flow:column;grid-auto-columns:168px;gap:16px;overflow-x:auto;padding:4px 2px 14px;scroll-snap-type:x proximity}
.row-scroll>*{scroll-snap-align:start}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:20px}
.mcard{position:relative;display:block;color:var(--text);background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh-1);transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.mcard:hover{transform:translateY(-5px);box-shadow:var(--sh-2);text-decoration:none}
.mmeta{padding:11px 13px 14px}
.mtitle{font-weight:750;line-height:1.25;color:var(--navy);margin-bottom:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mcard .score{margin-top:4px}
.poster{display:block;width:100%;aspect-ratio:2/3;object-fit:cover;background:#DDE5F0}
.poster.gen{position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:14px;color:#fff;background:linear-gradient(155deg,var(--a),var(--b));overflow:hidden}
.poster.gen::before{content:"";position:absolute;right:-30%;top:-18%;width:90%;aspect-ratio:1;border-radius:50%;background:rgba(255,255,255,.13)}
.poster.gen::after{content:"";position:absolute;left:-20%;bottom:-24%;width:70%;aspect-ratio:1;border-radius:50%;background:rgba(0,0,0,.16)}
.g-top{position:relative;z-index:1;font-size:10.5px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;opacity:.85}
.g-title{position:relative;z-index:1;font-weight:850;font-size:clamp(17px,1.9vw,22px);line-height:1.1;letter-spacing:-.01em;text-wrap:balance}
.g-year{position:relative;z-index:1;font-size:12px;font-weight:700;opacity:.85}
.rank{position:absolute;left:10px;top:10px;z-index:3;background:var(--gold);color:var(--deep);font-weight:850;border-radius:8px;padding:2px 9px;font-size:13px;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.filters{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 20px}
.filters .vn-select,.filters .vn-input{width:auto;min-width:150px;flex:1}
.pager{display:flex;gap:10px;justify-content:center;align-items:center;margin:28px 0}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.chips a{background:#fff;border:1px solid var(--line-2);border-radius:999px;padding:5px 14px;font-size:13px;font-weight:600;color:var(--navy)}
.chips a:hover{border-color:var(--navy);text-decoration:none;background:#F3F6FB}

/* movie page */
.mhead{display:grid;grid-template-columns:260px 1fr;gap:34px;margin-top:8px}
.mhead .poster{border-radius:var(--r);box-shadow:var(--sh-2)}
.bigscore{display:flex;gap:14px;flex-wrap:wrap;margin:16px 0}
.bigscore .box{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px 18px;min-width:128px;box-shadow:var(--sh-1)}
.bigscore .num{font-size:28px;font-weight:850;color:var(--navy)}
.people{display:grid;grid-auto-flow:column;grid-auto-columns:116px;gap:14px;overflow-x:auto;padding-bottom:8px}
.person{display:block;color:var(--text);font-size:13px}
.person img,.person .ph{width:100%;aspect-ratio:1;object-fit:cover;border-radius:50%;background:#DDE5F0;display:block;margin-bottom:6px}
.person b{display:block;color:var(--navy)}
.trailer{position:relative;aspect-ratio:16/9;max-width:760px;border-radius:var(--r);overflow:hidden;background:#000;box-shadow:var(--sh-2)}
.trailer iframe,.trailer button{position:absolute;inset:0;width:100%;height:100%;border:0}
.trailer button{background:#000 center/cover;color:#fff;font:700 18px var(--font);cursor:pointer}
.review{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;margin:12px 0;box-shadow:var(--sh-1)}
.review h4{margin:0 0 4px}
.review .by{color:var(--muted);font-size:13px}
.spoil summary{cursor:pointer;color:#0B5CAD;font-weight:600}
.votes{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.votes form{display:inline}
.votes button{background:#fff;border:1px solid var(--line-2);color:var(--navy);border-radius:999px;padding:3px 12px;cursor:pointer;font:600 13px var(--font)}
.votes button:hover{border-color:var(--navy)}
.starpick{display:inline-flex;flex-direction:row-reverse;gap:2px}
.starpick input{position:absolute;opacity:0;pointer-events:none}
.starpick label{font-size:30px;color:#CBD5E3;cursor:pointer;line-height:1}
.starpick input:checked~label,.starpick label:hover,.starpick label:hover~label{color:#E7A400}
.starpick input:focus-visible+label{outline:2px solid var(--navy);border-radius:4px}
.formbox{max-width:430px;margin:30px auto}
.formbox .vn-card{padding:26px}
.hr{height:1px;background:var(--line);margin:24px 0}
.bar{background:#E7ECF4}

/* footer */
.foot{margin-top:60px;background:#fff;border-top:1px solid var(--line);color:var(--muted)}
.foot-in{display:flex;gap:40px;flex-wrap:wrap;justify-content:space-between;padding-top:34px;padding-bottom:10px}
.foot-links{display:flex;flex-direction:column;gap:6px;font-size:14px}.foot-links b{color:var(--navy);margin-bottom:2px}
.foot-links a{color:var(--muted)}.foot-links a:hover{color:var(--navy)}
.foot-bottom{display:flex;flex-direction:column;gap:4px;padding-top:14px;padding-bottom:26px;font-size:13px;border-top:1px solid var(--line);margin-top:20px}

@media(max-width:860px){
  .hero-in{grid-template-columns:1fr}
  .fan{height:300px;max-width:420px;margin:0 auto;width:100%}
  .mhead{grid-template-columns:1fr}.mhead .poster{max-width:230px}
  .vn-topbar-in{gap:10px}
  .navsearch{order:5;max-width:none;flex-basis:100%}
  .acct{margin-left:auto}
  .row-scroll{grid-auto-columns:142px}
  .mgrid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* ===== Header: desktop polish + mobile drawer ===== */
.vn-topbar-in{flex-wrap:nowrap;gap:22px;min-height:66px}
.vn-nav{gap:4px}
.vn-nav a{position:relative;padding:9px 14px;font-weight:650;letter-spacing:-.005em}
.vn-nav a.on{background:transparent;color:var(--navy)}
.vn-nav a.on::after{content:"";position:absolute;left:14px;right:14px;bottom:2px;height:3px;border-radius:3px;background:var(--gold)}
.navsearch{flex:1 1 240px;max-width:380px;margin-left:auto}
.m-only{display:none}
.ic{width:20px;height:20px;flex:none}
.icon-btn{display:none;align-items:center;justify-content:center;width:44px;height:44px;border-radius:14px;border:1px solid var(--line);background:#fff;color:var(--navy);cursor:pointer;padding:0;transition:background .15s,border-color .15s}
.icon-btn:hover{background:#F0F4FA;text-decoration:none}
.menu-btn{flex-direction:column;gap:5px}
.menu-btn span{display:block;width:20px;height:2px;border-radius:2px;background:var(--navy);transition:transform .25s var(--ease),opacity .2s}
.menu-btn[aria-expanded=true] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.menu-btn[aria-expanded=true] span:nth-child(2){opacity:0}
.menu-btn[aria-expanded=true] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.scrim{position:fixed;inset:0;z-index:60;background:rgba(6,23,43,.5);opacity:0;transition:opacity .25s;backdrop-filter:blur(2px)}
.scrim.show{opacity:1}
.drawer{position:fixed;top:0;right:0;bottom:0;z-index:70;width:min(88vw,360px);background:#fff;box-shadow:-18px 0 50px rgba(6,23,43,.25);transform:translateX(104%);visibility:hidden;transition:transform .3s var(--ease),visibility 0s .3s;display:flex;flex-direction:column;padding:14px 18px 22px;overflow-y:auto;border-radius:24px 0 0 24px}
.drawer.open{transform:none;visibility:visible;transition:transform .3s var(--ease)}
.d-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.d-search{display:flex;align-items:center;gap:10px;background:#EEF2F8;border-radius:14px;padding:0 14px;color:var(--muted);margin-bottom:14px}
.d-search input{flex:1;border:0;background:transparent;font:inherit;padding:13px 0;color:var(--text);outline:0;min-width:0}
.d-search:focus-within{box-shadow:0 0 0 3px rgba(11,92,173,.35);background:#fff}
.d-nav{display:flex;flex-direction:column;gap:4px}
.d-nav a,.d-link{display:flex;align-items:center;gap:14px;padding:14px 14px;border-radius:14px;color:var(--navy);font-weight:700;font-size:17px}
.d-nav a:hover,.d-link:hover{background:#F0F4FA;text-decoration:none}
.d-nav a.on{background:#FFF4D6;color:var(--navy)}
.d-nav a.on .ic{color:#B97F00}
.d-nav .ic,.d-link .ic{color:var(--muted)}
.d-acct{margin-top:auto;padding-top:18px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px}
.d-user{display:flex;align-items:center;gap:12px;margin-bottom:4px}
.d-user b{display:block;color:var(--navy)}.d-user small{color:var(--muted);word-break:break-all}
.d-av{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:var(--deep);font-weight:800;font-size:18px}
html.no-scroll,html.no-scroll body{overflow:hidden}
@media(max-width:860px){
  .vn-nav,.navsearch,.acct{display:none}
  .m-only,.icon-btn{display:inline-flex}
  .vn-topbar-in{min-height:60px;gap:10px;padding-top:8px;padding-bottom:8px}
  .brand{margin-right:auto}
  .home-main .hero-in{padding-top:30px}
}
@media(min-width:861px){.drawer,.scrim{display:none}}

.drawer:focus{outline:0}
@media(max-width:860px){.mhead>div:first-child .poster{margin-left:auto;margin-right:auto;max-width:240px}}
.facts{width:100%;border-collapse:collapse;font-size:15px}
.facts th{width:150px;text-align:left;color:var(--muted);font-weight:600;padding:9px 12px 9px 0;vertical-align:top;border-bottom:1px solid var(--line)}
.facts td{padding:9px 0;border-bottom:1px solid var(--line);color:var(--text)}
.facts tr:last-child th,.facts tr:last-child td{border-bottom:0}
@media(max-width:560px){.facts th{width:112px}}
