:root{--bg:#0d1412;--panel:#161f1b;--panel2:#1b2721;--line:#2a3930;--mint:#b2ef77;--text:#f3f6f0;--muted:#9daa9f}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--text)}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.shell{width:min(1180px,calc(100% - 42px));margin:auto}.head{border-bottom:1px solid #243128;position:sticky;z-index:20;top:0;background:#0d1412ef;backdrop-filter:blur(18px)}.head-inner{height:76px;display:flex;align-items:center;justify-content:space-between;gap:20px}.logo{font-size:23px;font-weight:900;letter-spacing:-1.2px;white-space:nowrap}.logo span:last-child{color:var(--mint);margin-left:6px}.logo-icon{color:var(--mint);font-size:26px;margin-right:7px}.head nav{display:flex;gap:39px;color:#ced8cd;font-size:14px}.head nav a:hover,.linkbtn:hover{color:var(--mint)}.linkbtn{background:none;border:0;color:#c5d2c3;font-size:13px}.hero{height:470px;position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;overflow:hidden}.eyebrow,.overline{font-size:12px;letter-spacing:2px;text-transform:uppercase;color:var(--mint);font-weight:800}.eyebrow{display:flex;align-items:center;gap:11px}.pulse{height:7px;width:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 12px var(--mint)}h1{font-size:clamp(49px,6vw,80px);line-height:1.15;letter-spacing:-4px;margin:23px 0 13px;z-index:1}h1 em{font-style:normal;color:var(--mint)}.hero p{max-width:505px;font-size:16px;color:#a8b5ab;line-height:1.9;z-index:1}.hero-actions{display:flex;gap:21px;margin-top:21px;align-items:center;z-index:1}.primary{background:var(--mint);color:#142114;border:1px solid var(--mint);font-weight:800;padding:13px 24px;border-radius:7px;display:inline-flex;justify-content:space-between;gap:22px;align-items:center}.primary:hover{background:#d1ffab}.ghost{background:transparent;color:#e9efe6;border:1px solid #455749;padding:12px 22px;border-radius:7px}.ghost:hover{border-color:var(--mint)}.hero-side{position:absolute;right:15px;top:7px;height:410px;width:405px;display:grid;place-items:center;opacity:.75}.ball-art{font-size:340px;line-height:1;color:#b2ef77;text-shadow:0 0 85px #9df05c4a;transform:rotate(-16deg)}.hero-side span{font-size:10px;color:#627463;letter-spacing:4px;position:absolute;bottom:10px;right:15px}.section{padding:45px 0 35px;scroll-margin-top:85px}.section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:25px}.section-title h2{font-size:30px;margin:8px 0 0;letter-spacing:-1px}.accent{color:var(--mint);font-size:17px;letter-spacing:0}.subdued,.footnote{font-size:12px;color:#87988a}.watch-grid{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(250px,1fr);gap:20px}.player-card,.streams,.fixtures,.tip{background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:hidden}.player-top{display:flex;align-items:center;gap:13px;padding:14px 18px;font-size:12px;color:#dce6dd}.status-dot{background:#374537;border-radius:5px;font-weight:700;padding:5px 10px;color:#d5e4ce}.status-dot.live{background:#df544b;color:white}.player{aspect-ratio:16/9;background:radial-gradient(circle at center,#233a29 0,#0b120f 63%);display:grid;place-items:center;position:relative;overflow:hidden}.player video,.player iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#000}.play-empty{display:flex;align-items:center;flex-direction:column;gap:13px;color:#eaf4e9;text-align:center}.play-empty small{color:#849988}.play-ring{border:1px solid #65846e;border-radius:50%;width:66px;height:66px;display:grid;place-items:center;color:var(--mint);font-size:23px;padding-left:4px}.player-meta{display:flex;justify-content:space-between;align-items:center;padding:19px;gap:15px}.player-meta strong{font-size:17px}.player-meta p{margin:8px 0 0;color:var(--muted);font-size:12px}.outline-badge{border:1px solid #3b5441;border-radius:5px;color:var(--mint);padding:7px 9px;font-size:11px;white-space:nowrap}.streams{padding:19px}.side-heading{display:flex;justify-content:space-between;margin-bottom:16px;align-items:center}.side-heading span,.side-note{font-size:11px;color:#829586}.stream-item{display:block;width:100%;background:#1b2820;border:1px solid transparent;border-radius:8px;text-align:left;color:#fff;padding:16px;margin-bottom:10px}.stream-item.selected{border-color:#91cb6f;background:#233429}.stream-item strong{display:block;font-size:14px;margin:9px 0}.stream-item small{color:#9fac9e}.mini-status{font-size:10px;color:var(--mint);font-weight:700}.mini-status.live{color:#fa7972}.side-note{line-height:1.8;margin-top:20px}.tabbar{display:flex;gap:6px;flex-wrap:wrap}.tabbar button,.adminnav button{padding:8px 13px;border:1px solid #324236;background:#19231d;color:#9bac9b;border-radius:6px;font-size:12px}.tabbar button.active,.adminnav button.active{background:var(--mint);color:#0e1d10;border-color:var(--mint);font-weight:800}.fixture-row{display:grid;grid-template-columns:140px 1fr 120px 80px;align-items:center;gap:12px;padding:18px 24px;border-bottom:1px solid #2c3b31}.fixture-row:last-child{border:0}.league{font-size:12px;color:#a8b9aa}.teams{display:flex;align-items:center;justify-content:center;gap:15px;font-weight:750}.vs{color:#708572;font-size:12px}.f-time{text-align:center;font-size:12px;color:#b7c5b8}.f-time small{display:block;color:#7f9582;margin-top:4px}.watch-link{text-align:right;color:var(--mint);font-size:12px}.footnote{margin:15px 0 0;line-height:1.8}.tip-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.tip{padding:25px;min-height:250px;display:flex;flex-direction:column}.tip-tag{display:flex;justify-content:space-between;align-items:center;gap:7px;color:var(--mint);font-size:11px;font-weight:750}.tip h3{font-size:19px;line-height:1.45;margin:20px 0 9px}.tip p{color:#a2b1a2;font-size:13px;line-height:1.8;margin:0}.tip .author{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:16px;margin-top:auto;color:#a7b8a5;font-size:11px;gap:7px}.last{padding-bottom:75px}footer{border-top:1px solid #26372a;padding:28px 0;color:#a4b3a6;font-size:12px}.foot{display:flex;justify-content:space-between;align-items:center;gap:20px}.foot b{color:var(--mint);display:block;font-size:16px}.foot small{display:block;margin-top:6px}.empty{padding:35px;text-align:center;color:#8fa08f}.hidden{display:none!important}.modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px}.shade{position:absolute;inset:0;background:#000b}.modal-panel{position:relative;background:#17211b;border:1px solid #486249;border-radius:15px;padding:24px;width:min(760px,100%);max-height:91vh;overflow:auto;box-shadow:0 20px 100px #0009}.modal-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-title small{color:var(--mint);letter-spacing:2px}.modal-title h3{font-size:25px;margin:6px 0}.modal-title button{color:#fff;background:none;border:0;font-size:20px}.note{color:#afbbaf;font-size:12px;line-height:1.9}.modal label{display:block;color:#d8e7d8;font-size:12px;margin:10px 0}.modal input,.modal textarea,.modal select{margin-top:6px;background:#0f1912;border:1px solid #3b5140;border-radius:6px;color:#fff;padding:11px;width:100%;outline:none}.modal input:focus,.modal textarea:focus{border-color:var(--mint)}.wide{width:100%;justify-content:center;margin-top:12px}.error{color:#f38585;font-size:12px}.adminnav{display:flex;gap:7px;flex-wrap:wrap}.adminform{background:#101a14;border:1px solid #324332;border-radius:10px;padding:15px;margin:15px 0}.adminform header{display:flex;justify-content:space-between;padding:0;background:none;border:0}.adminform h4{font-size:14px;margin:0}.remove{background:none;border:0;color:#ff9b8c}.formfields{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}.formfields .full{grid-column:1/-1}.admin-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:16px}.feedback{font-size:12px;color:var(--mint)}@media(max-width:850px){.hero-side{right:-130px;opacity:.23}.watch-grid{grid-template-columns:1fr}.tip-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.fixture-row{grid-template-columns:95px 1fr 85px 60px;padding:16px 12px;gap:7px}.teams{gap:7px;font-size:13px}}@media(max-width:600px){.head-inner{height:65px;flex-wrap:wrap;gap:0}.logo{font-size:20px}.head nav{order:3;justify-content:space-around;width:100%;padding-bottom:11px;font-size:12px;gap:8px}.head-inner{height:auto;padding:11px 0 0}.head .linkbtn{font-size:12px}.hero{height:415px}.hero h1{font-size:48px;letter-spacing:-2.4px}.hero p{font-size:13px}.hero-side{right:-190px;top:75px}.section{padding-top:38px;scroll-margin-top:110px}.section-title{align-items:flex-start;flex-direction:column}.section-title h2{font-size:26px}.section-title .subdued{display:none}.fixture-row{grid-template-columns:1fr 76px 47px;gap:6px;padding:16px 12px}.fixture-row .league{grid-column:1/-1}.teams{justify-content:flex-start}.f-time{font-size:11px}.tip-grid{grid-template-columns:1fr}.tip{min-height:220px}.foot{align-items:flex-start;flex-direction:column}.formfields{grid-template-columns:1fr}.player-meta{align-items:flex-start;flex-direction:column}}

/* 五大联赛实时赛程 */
.schedule-toolbar,.schedule-meta{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:16px 0}.league-pills,.range-controls{display:flex;gap:7px;flex-wrap:wrap;align-items:center}.league-pills button,.range-controls button,.refresh-score{border:1px solid #36473f;border-radius:10px;background:#1b2923;color:#d9e8df;padding:9px 13px;cursor:pointer;font:inherit}.league-pills button.active,.league-pills button:hover{background:#b8f07b;color:#15221a;border-color:#b8f07b}.range-controls span{font-size:13px;color:#c4d2c8;white-space:nowrap}.schedule-meta{margin:12px 0}.schedule-meta #realUpdated{color:#9aaea1;font-size:13px}.official-row .source-mark{font-size:11px;color:#789788}.official-teams .team-name{display:inline-flex;align-items:center;gap:6px}.team-crest{width:22px;height:22px;object-fit:contain}.score-live{color:#b8f07b!important;font-weight:700}.manual-fixtures{margin-top:24px;border-top:1px solid #314339;padding-top:18px}.manual-fixtures summary{color:#9dbca7;cursor:pointer;margin-bottom:15px}.empty p{margin-top:12px;line-height:1.6}.official-row{min-width:0}@media(max-width:700px){.official-row{padding:15px 10px}.official-row .source-mark{display:none}.official-teams .team-name{font-size:12px}.team-crest{width:17px;height:17px}.league-pills{gap:5px}.league-pills button,.range-controls button{padding:8px 9px;font-size:12px}.range-controls{width:100%;justify-content:space-between}.schedule-meta{gap:12px}}

/* V2.1 首页双宣传图：电脑侧栏组合、手机纵向展示，完整保留二维码与文字 */
.hero{min-height:630px;height:auto;padding-top:65px;padding-bottom:65px;padding-right:590px;overflow:visible}
.hero>h1{font-size:clamp(46px,5.2vw,72px)}
.hero-side.hero-promotions{position:absolute;right:0;top:50%;transform:translateY(-50%);width:555px;height:540px;opacity:1;display:flex;align-items:center;justify-content:center;gap:15px;z-index:2}
.promo-card{margin:0;background:#17221d;border:1px solid #304a37;border-radius:14px;padding:7px;box-shadow:0 18px 48px #0006;overflow:hidden;min-width:0}
.promo-card img{display:block;width:100%;height:100%;object-fit:contain;border-radius:9px;background:#eef4f5}
.promo-main{width:288px;height:535px;flex:0 0 auto}
.promo-secondary{width:250px;max-height:350px;height:auto;flex:0 0 auto;align-self:center}
.promo-secondary img{height:auto;aspect-ratio:681/607}
@media(max-width:1100px){.hero{padding-right:50%;}.hero-side.hero-promotions{width:49%;height:auto;gap:8px}.promo-main{width:53%;height:auto}.promo-main img{height:auto;aspect-ratio:702/1280}.promo-secondary{width:45%;height:auto;padding:5px}}
@media(max-width:780px){.hero{padding:48px 0 45px;min-height:0}.hero-side.hero-promotions{position:static;transform:none;width:100%;height:auto;opacity:1;justify-content:center;margin-top:35px;gap:12px}.promo-main{width:min(52%,310px)}.promo-secondary{width:min(44%,270px)}.hero>h1{font-size:clamp(42px,7vw,60px)}}
@media(max-width:520px){.hero{padding:36px 0}.hero-side.hero-promotions{align-items:center;gap:9px;margin-top:26px}.promo-card{padding:4px;border-radius:9px}.promo-card img{border-radius:6px}.promo-main{width:54%}.promo-secondary{width:43%}.hero>h1{font-size:46px}}

/* Camera streaming and guest chat */
.interact-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(290px,1fr);gap:20px}.interact-video,.chat-panel{background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:hidden}.interact-header{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:15px}.interact-header span{font-size:12px;color:var(--mint)}.interact-screen{background:#050807;aspect-ratio:16/9;position:relative;display:grid;place-items:center}.interact-screen video{width:100%;height:100%;object-fit:contain;position:absolute;inset:0;background:black}.interact-screen #roomPlaceholder{position:relative;text-align:center;color:#bcd1bd}.interact-screen #roomPlaceholder .play-ring{margin:auto}.interact-tools{display:flex;align-items:center;gap:12px;padding:12px;flex-wrap:wrap;color:var(--muted);font-size:12px}.studio{padding:20px;border-top:1px solid var(--line)}.studio h3{margin:0 0 8px}.studio p{font-size:13px;line-height:1.8;color:var(--muted)}.studio-buttons{display:flex;flex-wrap:wrap;gap:9px}.studio-buttons button{padding:10px}.file-label{display:block;font-size:13px;margin-top:15px}.file-label input{display:block;margin-top:8px;max-width:100%}.chat-panel{display:flex;flex-direction:column;padding:16px;min-height:460px}.name-box,.chat-composer{display:flex;gap:7px;align-items:flex-end}.name-box label{flex:1;color:var(--muted);font-size:12px}.name-box input,.chat-composer input{display:block;width:100%;padding:11px;background:#101a14;border:1px solid #3c4b41;color:white;border-radius:7px;min-width:0}.name-box button,.chat-composer button{padding:11px 14px}.chat-messages{flex:1;max-height:365px;min-height:200px;overflow:auto;margin:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px 0}.chat-message{padding:8px 0;word-break:break-word;font-size:13px}.chat-message b{color:var(--mint);margin-right:7px}.chat-message small{color:var(--muted);margin-left:5px}.chat-message .remove-chat{float:right;background:none;color:#ec9b9b;border:0;font-size:11px}.moderation{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}.moderation>div{max-height:150px;overflow:auto}.visitor-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:12px}.visitor-row button{background:#2b3e30;color:#fff;border:0;border-radius:4px;padding:5px 9px}.hidden{display:none!important}@media(max-width:790px){.interact-layout{grid-template-columns:1fr}.chat-panel{min-height:390px}.interact-header{padding:12px}.studio-buttons button{flex:1}}

/* V3.1.1 首页右侧单张海报铺满展示区（保持左侧栏目与其他功能不变） */
.hero{min-height:680px;padding-right: min(51%, 610px);overflow:visible}
.hero-side.hero-promotions{position:absolute;right:0;top:50%;transform:translateY(-50%);width:48%;height:630px;display:block;opacity:1;z-index:2}
.hero-promotions .promo-main{display:block;width:100%;height:100%;margin:0;padding:0;border-radius:15px;overflow:hidden;border:1px solid #304a37}
.hero-promotions .promo-main img{display:block;width:100%;height:100%;object-fit:cover;object-position:center center;border-radius:0;background:transparent}
.hero-promotions .promo-secondary{display:none!important}
@media(max-width:1100px){.hero{padding-right:51%}.hero-side.hero-promotions{width:48%;height:600px}}
@media(max-width:780px){.hero{min-height:0;padding:48px 0 45px}.hero-side.hero-promotions{position:static;transform:none;width:100%;height:auto;margin-top:32px}.hero-promotions .promo-main{width:min(100%,430px);height:auto;margin:0 auto;aspect-ratio:4/5}.hero-promotions .promo-main img{width:100%;height:100%;object-fit:cover}}
@media(max-width:520px){.hero{padding:36px 0}.hero-side.hero-promotions{margin-top:26px}.hero-promotions .promo-main{width:100%;border-radius:10px}}

/* V3.2: independent administrator entry. Public page stays a viewer experience. */
body:not(.admin-route) #adminBtn { display: none !important; }
body:not(.admin-route) #studio,
body:not(.admin-route) #moderation { display: none !important; }
.admin-route .hero,
.admin-route #live,
.admin-route #schedule,
.admin-route #insights { display:none !important; }
.admin-route #creatorLive { padding-top:32px; }
.admin-route header.head nav { display:flex; }


/* V3.2.1: show the ENTIRE promotional poster at a smaller size. */
@media (min-width:781px) {
  .hero { min-height:590px; padding-right:45%; }
  .hero-side.hero-promotions {
    width:min(37%, 390px);
    height:auto;
    aspect-ratio:4 / 5;
    right:0;
    top:50%;
    transform:translateY(-50%);
  }
  .hero-promotions .promo-main { width:100%; height:100%; }
}
.hero-promotions .promo-main img {
  width:100%; height:100%; object-fit:contain;
  object-position:center center;
  background:#0d1412;
}
@media (max-width:780px) {
  .hero-side.hero-promotions { width:100%; height:auto; transform:none; }
  .hero-promotions .promo-main {
    width:min(100%,340px);
    height:auto;
    aspect-ratio:4 / 5;
    margin:0 auto;
  }
  .hero-promotions .promo-main img { object-fit:contain; }
}

/* V3.3: integrate camera and visitor chat into the existing live channel */
.camera-stage{background:#080e0b;border-top:1px solid var(--line)}
.camera-stage .interact-screen{aspect-ratio:16/9}
.channel-extras{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;margin-top:20px;align-items:start}
.channel-extras .chat-panel,.channel-extras .studio{background:var(--panel);border:1px solid var(--line);border-radius:13px;min-height:0}
.channel-extras .studio{padding:20px}
.channel-extras .chat-panel{min-height:330px}
@media(max-width:790px){.channel-extras{grid-template-columns:1fr}}

/* V3.4: admin-integrated studio + image/text recommendations */
.section-hidden{display:none!important}#studioMount .studio{margin:16px 0;padding:18px;border:1px solid #415c45;border-radius:10px;background:#101a14}#studioMount .studio h3{margin:0 0 12px}#studioMount .studio-buttons{display:flex;flex-wrap:wrap;gap:9px}#studioMount .file-label{display:block;margin-top:13px}#studioMount input[type=file],.tip-upload input[type=file]{width:100%;font-size:13px}.tip-image{max-width:100%;height:auto;max-height:460px;object-fit:contain;border-radius:8px;margin:10px 0 14px;align-self:center}.tip p{white-space:pre-line}.tip-image-preview{display:block;max-width:200px;max-height:220px;object-fit:contain;margin:8px 0;border-radius:8px}.tip-upload{min-width:0;overflow-wrap:anywhere}.tip-upload input[type=text]{font-size:12px}#studioMount .studio.hidden{display:none!important}

/* V3.5 microphone and shared live artwork */
#player,.camera-stage{position:relative}.channel-broadcast-overlay{position:absolute;right:14px;bottom:14px;width:auto;max-width:min(38%,300px);max-height:48%;object-fit:contain;z-index:8;pointer-events:none;filter:drop-shadow(0 2px 8px #0009)}.studio-volumes{display:grid;gap:12px;margin:16px 0}.studio-volumes label{display:flex;gap:12px;align-items:center;flex-wrap:wrap;color:#d5e8d8}.studio-volumes input{width:min(100%,350px);accent-color:#adf27b}.studio-volumes output{min-width:45px;color:#b3f17f}#player:has(.channel-broadcast-overlay){min-height:200px}

/* V3.6 configurable synchronized viewer overlay */
#player,#cameraStage{position:relative;isolation:isolate}
#player .channel-broadcast-overlay,#cameraStage .channel-broadcast-overlay{position:absolute;display:block;box-sizing:border-box;max-width:100%;max-height:95%;width:55%;height:auto;object-fit:contain;pointer-events:none;z-index:50;filter:drop-shadow(0 3px 8px #0009);inset:auto;transform:none;right:2%;bottom:2%;left:auto;top:auto}
.channel-broadcast-overlay[data-position="top-left"]{top:2%!important;left:2%!important;right:auto!important;bottom:auto!important;transform:none!important}
.channel-broadcast-overlay[data-position="top-center"]{top:2%!important;left:50%!important;right:auto!important;bottom:auto!important;transform:translateX(-50%)!important}
.channel-broadcast-overlay[data-position="top-right"]{top:2%!important;right:2%!important;left:auto!important;bottom:auto!important;transform:none!important}
.channel-broadcast-overlay[data-position="middle-left"]{top:50%!important;left:2%!important;right:auto!important;bottom:auto!important;transform:translateY(-50%)!important}
.channel-broadcast-overlay[data-position="center"]{top:50%!important;left:50%!important;right:auto!important;bottom:auto!important;transform:translate(-50%,-50%)!important}
.channel-broadcast-overlay[data-position="middle-right"]{top:50%!important;right:2%!important;left:auto!important;bottom:auto!important;transform:translateY(-50%)!important}
.channel-broadcast-overlay[data-position="bottom-left"]{bottom:2%!important;left:2%!important;right:auto!important;top:auto!important;transform:none!important}
.channel-broadcast-overlay[data-position="bottom-center"]{bottom:2%!important;left:50%!important;right:auto!important;top:auto!important;transform:translateX(-50%)!important}
.channel-broadcast-overlay[data-position="bottom-right"]{bottom:2%!important;right:2%!important;left:auto!important;top:auto!important;transform:none!important}
.overlay-layout-controls{display:grid;gap:14px;margin:14px 0;padding:14px;border:1px solid #345044;border-radius:12px}
.overlay-layout-controls label{display:grid;gap:8px;color:#d5e8d8}
.overlay-layout-controls input[type=range]{width:100%;accent-color:#adf27b}
.overlay-layout-controls select{width:100%;padding:10px;background:#0e1a14;color:#e7f3e9;border:1px solid #45664c;border-radius:8px}

/* V3.7 会员聊天登录 */
.member-login{padding:12px;border:1px solid #365146;border-radius:12px;margin:12px 0;display:grid;gap:8px}.member-login small{color:#adc7b7}.member-login #memberAuth{display:grid;gap:7px}.member-login input{min-width:0;width:100%;box-sizing:border-box;padding:9px;background:#102019;color:#fff;border:1px solid #44614e;border-radius:7px}.member-buttons{display:flex;gap:8px;flex-wrap:wrap}.member-buttons button,.member-login button{padding:8px 12px;background:#a7e878;border:0;border-radius:8px;cursor:pointer}.visitor-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.visitor-row button{padding:5px 8px}.hidden{display:none!important}

/* V3.8: desktop chat left, member login right */
.channel-extras{grid-template-columns:minmax(0,1.65fr) minmax(310px,1fr);align-items:stretch}
.member-panel{background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:20px;align-self:start}
.member-panel h3{margin:0 0 16px}.member-panel .member-login{margin:0}
.member-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;padding:12px 4px;border-bottom:1px solid var(--line)}
.member-row small{color:var(--muted)}.member-actions{display:flex;gap:6px;flex-wrap:wrap}.member-actions button{padding:7px;border:1px solid var(--line);border-radius:7px;background:#243a2b;color:#fff;cursor:pointer}
@media(max-width:790px){.channel-extras{grid-template-columns:1fr}.member-panel{order:2}}

/* V3.9 player controls, fullscreen and optional live chat overlay */
#livePlayerCard{position:relative;min-width:0}
.viewer-controls{display:flex;gap:8px;justify-content:flex-end;padding:8px 12px;background:#15211a;position:relative;z-index:11}
.viewer-controls button{border:1px solid #4c6650;border-radius:7px;background:#223429;color:#d9f2cc;padding:8px 13px;cursor:pointer;font-size:13px}
.viewer-controls button[aria-pressed="true"]{background:#a9ed7a;color:#11200e}
#player .danmu-layer,#cameraStage .danmu-layer{position:absolute;inset:0;z-index:65;pointer-events:none;overflow:hidden;display:none}
#player .danmu-layer.danmu-visible,#cameraStage .danmu-layer.danmu-visible{display:block}
.danmu-message{position:absolute;left:100%;white-space:nowrap;max-width:90%;overflow:hidden;text-overflow:ellipsis;font-weight:700;font-size:clamp(12px,1.8vw,20px);color:#fff;text-shadow:0 1px 3px #000,0 0 6px #000;background:#0006;border-radius:5px;padding:3px 7px;animation:danmu-fly 10s linear forwards}
@keyframes danmu-fly{from{transform:translateX(0)}to{transform:translateX(calc(-100vw - 130%))}}
#livePlayerCard:fullscreen{width:100vw;height:100dvh;background:#060906;display:flex;flex-direction:column;justify-content:center}
#livePlayerCard:fullscreen .player-top,#livePlayerCard:fullscreen .player-meta{display:none}
#livePlayerCard:fullscreen .viewer-controls{position:absolute;right:12px;top:12px;background:#0008;border-radius:9px}
#livePlayerCard:fullscreen #player:not(.hidden),#livePlayerCard:fullscreen #cameraStage:not(.hidden){width:100%;max-height:100dvh;flex:1;display:flex;justify-content:center;align-items:center}
#livePlayerCard:fullscreen #player video,#livePlayerCard:fullscreen #cameraStage video{max-height:100dvh;object-fit:contain}
@media(max-width:790px){
 .watch-grid{display:flex;flex-direction:column;gap:14px}
 .watch-grid>.player-card{order:1;width:100%}
 .watch-grid>#channelChatPanel{order:2;width:100%;min-height:290px}
 .watch-grid>.streams{order:3;width:100%}
 .channel-extras{display:flex;flex-direction:column}
 .viewer-controls{justify-content:space-between}
}

/* V3.11 admin realtime chat */
.admin-chat-desk{border:1px solid #365246;border-radius:14px;margin:18px 0;padding:15px;background:#101a16;color:#e8f3e9}.admin-chat-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.admin-chat-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:14px}.admin-chat-grid section{min-width:0}.admin-chat-feed,.admin-online-users{height:260px;overflow:auto;border:1px solid #345044;border-radius:9px;padding:9px;background:#0b1511}.admin-msg,.admin-user-row{border-bottom:1px solid #293b33;padding:8px 3px;overflow-wrap:anywhere}.admin-msg small,.admin-user-row small{opacity:.72}.admin-msg button,.admin-user-row button{font-size:12px;margin:3px;padding:5px 8px}.admin-chat-send{display:flex;gap:8px;margin-top:8px}.admin-chat-send input{flex:1;min-width:0}.admin-user-row>div:last-child{display:flex;flex-wrap:wrap}.admin-chat-head h3{margin:5px 0 12px}@media(max-width:750px){.admin-chat-grid{grid-template-columns:1fr}.admin-chat-feed,.admin-online-users{height:200px}}

/* V3.12 — display the actual video player horizontally, including iframe/HLS/MP4.
   On phones without screen.orientation.lock, rotate the player card itself. */
body.landscape-open{overflow:hidden!important}
#livePlayerCard.landscape-mode{position:fixed!important;inset:0!important;z-index:99999!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:#000!important;width:100vw!important;height:100dvh!important;max-width:none!important;display:flex!important;flex-direction:column!important;justify-content:center!important;overflow:hidden!important}
#livePlayerCard.landscape-mode .player-top,#livePlayerCard.landscape-mode .player-meta{display:none!important}
#livePlayerCard.landscape-mode .viewer-controls{position:absolute!important;top:env(safe-area-inset-top, 6px)!important;right:env(safe-area-inset-right, 8px)!important;z-index:100!important;background:#0009!important;border-radius:10px!important;padding:5px!important}
#livePlayerCard.landscape-mode #player:not(.hidden),#livePlayerCard.landscape-mode #cameraStage:not(.hidden){height:100%!important;width:100%!important;min-height:0!important;max-height:none!important;max-width:none!important;aspect-ratio:auto!important;flex:1 1 auto!important;overflow:hidden!important;background:#000!important;position:relative!important}
#livePlayerCard.landscape-mode #player video,#livePlayerCard.landscape-mode #player iframe,#livePlayerCard.landscape-mode #cameraStage video{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:contain!important;border:0!important}
#livePlayerCard.landscape-mode .camera-stage .interact-header,#livePlayerCard.landscape-mode .camera-stage .interact-tools,#livePlayerCard.landscape-mode .camera-stage .footnote{display:none!important}
#livePlayerCard.landscape-mode .camera-stage .interact-screen{height:100%!important;width:100%!important;position:relative!important}
@media(orientation:portrait){
 #livePlayerCard.landscape-mode.landscape-rotated{width:100dvh!important;height:100vw!important;top:0!important;left:100vw!important;right:auto!important;bottom:auto!important;transform:rotate(90deg)!important;transform-origin:top left!important}
 #livePlayerCard.landscape-mode.landscape-rotated .viewer-controls{top:5px!important;right:10px!important}
}

/* V3.13 管理员访问统计 */
.visit-stats{margin:18px 0}.stats-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:10px;margin:15px 0}.stats-cards>div{padding:15px;background:#101a14;border:1px solid #324332;border-radius:9px}.stats-cards small{display:block;color:#9aaa9b;font-size:12px}.stats-cards strong{font-size:27px;color:#b2ef77;display:block;margin-top:8px}.stats-table-wrap{max-height:360px;overflow:auto}.stats-table{width:100%;border-collapse:collapse;font-size:13px}.stats-table th,.stats-table td{padding:9px 12px;text-align:left;border-bottom:1px solid #354538}.stats-table th{position:sticky;top:0;background:#17211b}

/* V3.15: show guest composer as read-only, not unclickable. */
#chatInput[readonly]{cursor:text;opacity:1;background:#16231c;color:#c8d6cc}
#chatInput:not([readonly]){cursor:text;opacity:1}

/* V3.16 floating private chat; iOS safe-area support */
.gl-private{position:fixed;right:16px;bottom:calc(20px + env(safe-area-inset-bottom,0px));width:min(380px,calc(100vw - 24px));height:min(440px,75dvh);display:flex;flex-direction:column;background:#12221a;color:#f6fff7;border:1px solid #67935e;border-radius:14px;z-index:99999;box-shadow:0 16px 60px #0009;padding:12px;box-sizing:border-box}
.gl-private-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.gl-private-head button{border:0;background:#293a2b;color:white;font-size:22px;border-radius:6px;padding:2px 12px}.gl-private-history{flex:1;overflow:auto;border-block:1px solid #3b5647;margin:10px 0;padding:8px 0;overflow-wrap:anywhere}.gl-private-history p{margin:7px 0}.gl-private-compose{display:flex;gap:8px}.gl-private-compose input{min-width:0;flex:1;background:#0b1810;color:white;border:1px solid #536d58;padding:10px;border-radius:7px;font-size:16px}.gl-private-compose button{background:#aeef79;border:0;border-radius:7px;padding:8px 12px;color:#142016}.gl-private small{color:#f0b7a7}
#chatInput{pointer-events:auto!important;touch-action:manipulation;font-size:16px!important;position:relative;z-index:1}
@media(max-width:790px){.gl-private{right:8px;bottom:calc(8px + env(safe-area-inset-bottom,0px));height:min(420px,70dvh)}}

/* V3.17 targeted mobile composer fix: make input focusable while session syncs. */
#chatInput{pointer-events:auto!important;user-select:text;-webkit-user-select:text;touch-action:auto!important;min-height:44px}
#chatInput:focus{outline:2px solid #b2ef77;outline-offset:1px}

/* V3.18: official API and manually curated match fixtures are separate sections */
.separate-manual{margin:0;border:1px solid var(--line);border-radius:13px;padding:18px;background:var(--panel)}
.admin-official{padding:12px 0}.admin-official .stats-table-wrap{margin-top:14px;max-height:45vh;overflow:auto}.admin-official .admin-actions a{display:inline-flex;align-items:center}
@media(max-width:600px){.head nav{justify-content:flex-start;overflow-x:auto;scrollbar-width:none;gap:16px;white-space:nowrap}.head nav a{flex:0 0 auto}.separate-manual{padding:10px}.admin-official .stats-table{font-size:11px}}

/* V3.19: iPhone chat keyboard and touch target. */
#channelChatPanel .chat-composer{position:relative;z-index:3;pointer-events:auto;}
#channelChatPanel #chatInput{position:relative!important;z-index:4!important;min-height:48px!important;font-size:16px!important;pointer-events:auto!important;touch-action:manipulation!important;-webkit-user-select:text!important;user-select:text!important;}
#channelChatPanel #sendChat{position:relative;z-index:4;pointer-events:auto!important;touch-action:manipulation;}

/* V3.20 member panel: online first and visible presence */
.member-identity{display:flex;align-items:center;flex-wrap:wrap;gap:7px;min-width:0}.member-presence{display:inline-block;flex:0 0 10px;width:10px;height:10px;border-radius:50%;background:#78857e;box-shadow:0 0 0 2px #26352a}.member-presence.is-online{background:#63e578;box-shadow:0 0 0 2px #274b32,0 0 10px #63e57888}.member-actions button[data-private-member]{background:#a7e878;color:#132114;border-color:#a7e878;font-weight:700}.member-row{gap:12px}

/* V3.21: public composer always accepts taps and text input; only server authorizes sending. */
body:not(.admin-route) #channelChatPanel .chat-composer{position:relative;z-index:5;}
body:not(.admin-route) #chatInput{opacity:1!important;pointer-events:auto!important;user-select:text!important;-webkit-user-select:text!important;font-size:16px!important;touch-action:auto!important;min-height:48px!important;}
body:not(.admin-route) #sendChat{pointer-events:auto!important;}

/* V3.22 multiple admin private conversations: each account has its own window. */
.admin-private-windows{position:fixed;z-index:99998;right:12px;bottom:12px;display:flex;align-items:flex-end;flex-direction:row;gap:12px;max-width:calc(100vw - 24px);pointer-events:none;overflow-x:auto;scrollbar-width:thin;}
.admin-private-windows .admin-private-window{position:relative;right:auto;bottom:auto;flex:0 0 330px;width:330px;height:min(420px,68dvh);pointer-events:auto;z-index:auto;}
@media(max-width:750px){.admin-private-windows{right:8px;bottom:calc(8px + env(safe-area-inset-bottom,0px));max-width:calc(100vw - 16px);gap:8px}.admin-private-windows .admin-private-window{flex-basis:min(340px,calc(100vw - 20px));width:min(340px,calc(100vw - 20px));height:min(410px,67dvh)}}

/* V3.23 private images */
.gl-private-image{display:block;max-width:100%;max-height:245px;width:auto;height:auto;object-fit:contain;border-radius:9px;margin:7px 0;cursor:zoom-in;background:#0b140f}
.gl-private-compose{display:flex;gap:6px;align-items:center}.gl-private-compose input:not([type=file]){min-width:0;flex:1}.gl-private-compose button{flex:0 0 auto;padding:9px 11px}
@media(max-width:500px){.gl-private-compose button{padding:9px 7px;font-size:12px}}
.gl-private-compose input[type="file"][hidden]{display:none!important}

/* V3.24: same-page enlarged private-image viewer, safe on iOS/Android */
.gl-image-viewer{position:fixed!important;inset:0!important;z-index:2147483000!important;background:rgba(0,0,0,.94)!important;display:flex;align-items:center;justify-content:center;padding:60px 12px max(16px,env(safe-area-inset-bottom));touch-action:pan-x pan-y;overscroll-behavior:contain}
.gl-image-viewer.hidden{display:none!important}
.gl-image-viewer-photo{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;user-select:none;-webkit-user-select:none}
.gl-image-viewer-close{position:absolute;z-index:2;top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));background:#24362b;color:#fff;border:1px solid #719879;border-radius:9px;padding:10px 15px;font-size:15px;cursor:pointer}
.gl-private-image{cursor:zoom-in}


/* GOLD EDITION — visual redesign only, no changes to API/chat/admin logic */
:root {--bg:#100b0a;--panel:#1b1211;--panel2:#261b15;--line:#634329;--mint:#ffcb68;--text:#fff2dc;--muted:#c6ad94}
body {background:radial-gradient(circle at 78% 9%,rgba(132,34,24,.22),transparent 36%),radial-gradient(circle at 15% 25%,rgba(205,140,33,.10),transparent 40%),#100b0a}
.head {background:#150d0cf2;border-bottom:1px solid #75532d}
.head nav a:hover,.linkbtn:hover {color:#ffd476}
.logo span:last-child,.logo-icon {color:#ffd17b}
.hero {background:linear-gradient(110deg,rgba(106,24,18,.13),transparent 55%)}
.hero h1 em {color:#ffc45b;text-shadow:0 4px 30px #b84a2633}
.eyebrow,.overline {color:#ffcf7a}
.pulse {background:#ffc55e;box-shadow:0 0 12px #ffc55e}
.primary,.tabbar button.active,.adminnav button.active,.member-buttons button,.member-login button {background:linear-gradient(135deg,#ffe09a,#e9a73d);border-color:#e7aa50;color:#351607}
.primary:hover {background:linear-gradient(135deg,#ffedbe,#ffc35f)}
.ghost {border-color:#8d6745;color:#ffe2bc}
.ghost:hover {border-color:#ffc86d}
.player-card,.streams,.fixtures,.tip,.member-panel,.chat-panel,.admin-chat-desk {background:#1b1311;border-color:#5b3d2c}
.stream-item.selected {background:#34241c;border-color:#d9a652}
.status-dot.live {background:#a82422;color:#fff}
.tip-tag,.watch-link,.mini-status,.stream-item strong,.foot b {color:#ffce7c}
.logo,.hero h1,.section-title h2 {text-shadow:0 1px 16px rgba(221,124,47,.08)}
.hero-promotions .promo-main {border:1px solid #bf8036!important;box-shadow:0 16px 55px #0009,0 0 25px #bc661524;background:#160d08!important}
.hero-promotions .promo-main img {object-fit:contain!important;object-position:center!important;background:#150d0b!important}
/* The new poster is 4:~6.5 portrait. Never crop its content. */
@media(min-width:781px){.hero {min-height:700px;padding-right:46%}.hero-side.hero-promotions {width:min(38%,390px);height:auto;aspect-ratio:852/1280}.hero-promotions .promo-main {width:100%;height:100%}}
@media(max-width:780px){.hero {padding-bottom:36px}.hero-side.hero-promotions {position:static!important;width:100%!important;transform:none!important;height:auto!important;aspect-ratio:auto!important;display:block!important;margin-top:26px}.hero-promotions .promo-main {aspect-ratio:852/1280!important;width:min(100%,410px)!important;height:auto!important;max-width:100%;margin-inline:auto}.hero-promotions .promo-main img {width:100%;height:100%;object-fit:contain!important}}
