<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="icon" href="/favicon-v3.ico" sizes="any">
    <link rel="icon" type="image/svg+xml" href="/favicon-v3.svg">
    <link rel="icon" type="image/png" sizes="96x96" href="/favicon-v3-96x96.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-v3.png">
    <script>window.addEventListener("load",function(){var l=document.createElement("link");l.rel="manifest";l.href="/site.webmanifest";document.head.appendChild(l);});</script>
    <style>
      .resolutionbadge{height:26px;min-width:28px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px;box-sizing:border-box;font:bold 15px/1 Arial,sans-serif;letter-spacing:0.5px;border-radius:6px;}
      .resolutionbadge::before{content:attr(data-label);}
      .resolutionbadge.resolutionsd{background:#726870;color:#fff;}.resolutionbadge.resolutionsd::before{content:"SD";}
      .resolutionbadge.resolutionhd{background:#BFBFBF;color:#000;}.resolutionbadge.resolutionhd::before{content:"HD";}
      .resolutionbadge.resolutionfhd{background:#D4AE41;color:#000;}.resolutionbadge.resolutionfhd::before{content:"FHD";}
      .resolutionbadge.resolutionqhd{background:#604D80;color:#fff;}.resolutionbadge.resolutionqhd::before{content:"QHD";}
      .resolutionbadge.resolutionuhd{background:#1B171D;color:#0aaeed;}.resolutionbadge.resolutionuhd::before{content:"UHD";}
      .resolutionbadge.resolutionvr{background:#E4E4E4;color:#000;}.resolutionbadge.resolutionvr::before{content:"VR";}
      .recordingmodelleft{display:flex;flex-direction:row;align-items:center;gap:4px;}
      .recordingbadges{display:flex;flex-direction:row;gap:0;}
      body {font-family:system-ui,Arial,sans-serif;background:#0f0f0f;color:#eaeaea;margin:0;margin-left:auto;margin-right:auto;padding:0;}
      .wrap {width:900px;max-width:95vw;margin:auto;}
      .wrap:has(.recordings),.wrap:has(#recordingpage){width:95vw;max-width:none;}
      .pageHeader {height:90px;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center;}
      h1,h2,h3{color:#fff;margin-bottom:10px;}
      @media only screen and (max-width: 480px){.main-nav{height:29px;padding-top:24px;justify-content:center;}}
      @media only screen and (min-width: 481px){.main-nav{padding-top:24px;height:29px;justify-content:space-evenly;}}
      .main-nav {display:flex;flex-direction:row;align-items:center;width:900px;max-width:100vw;padding:0;flex-wrap:wrap;list-style-type:none;padding-bottom:24px;}
      .main-nav a{color:#ff4d7a;text-decoration:none;margin-right:15px;font-weight:600;outline:2px solid transparent;padding:4px;}
      .main-nav a:hover{color:#ff2050;}
      .main-nav .has-sub{position:relative;}
      .main-nav .has-sub > span{color:#ff4d7a;font-weight:600;cursor:pointer;padding:4px;margin-right:15px;}
      .main-nav .has-sub > span::after{content:" \25BE";font-size:0.8em;}
      .main-nav .has-sub .sub{display:none;position:absolute;top:100%;left:0;background:#1a1a2e;border:1px solid #333;border-radius:6px;padding:6px 0;list-style:none;margin:0;min-width:140px;z-index:100;}
      .main-nav .has-sub:hover .sub,.main-nav .has-sub:focus-within .sub{display:block;}
      .main-nav .has-sub .sub li{display:block;}
      .main-nav .has-sub .sub a{display:block;margin:0;padding:8px 14px;white-space:nowrap;}
      nav[aria-label="Breadcrumb"] .breadcrumb{list-style:none;margin:12px 0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;font-size:18px;color:#999}nav[aria-label="Breadcrumb"]
      .breadcrumb li{display:inline-flex;align-items:center;white-space:nowrap}nav[aria-label="Breadcrumb"]
      .breadcrumb li+li::before{content:"›";margin:0 8px;color:#666}nav[aria-label="Breadcrumb"]
      .breadcrumb a{text-decoration:none!important;color:#ff7a9c;word-break:normal;overflow-wrap:normal}nav[aria-label="Breadcrumb"]
      .breadcrumb a:hover{text-decoration:underline;color:#ff4d7a}nav[aria-label="Breadcrumb"]
      .breadcrumb [aria-current="page"]{color:#bbb}
      #backToTop {position: fixed;text-decoration:none;padding:10px;color:#fff;background:#228B22;border-radius:100px;float:right;position:sticky;position:-webkit-sticky;bottom:4px;margin-right:4px;z-index:10;}
      .recordings{padding-bottom:40px;}
      .filehosticonfileboom,.filehosticontezfiles,.filehosticonupstore{width:18px;height:18px;display:inline-flex;align-items:center;gap:4px;background-image:url("/images/icons/icons.v2.7.webp");background-repeat:no-repeat;}
      .filehosticonfileboom{background-position:0 -18px;}
      .filehosticontezfiles{background-position:-18px -18px;}
      .filehosticonupstore{background-position:-36px -18px;}
      .gendericon{width:18px;height:18px;display:inline-block;background-image:url("/images/icons/icons.v2.7.webp");background-repeat:no-repeat;vertical-align:middle;flex:0 0 18px;}
      .gendericoncouple{background-position:-54px -18px;}
      .gendericonfemale{background-position:-72px -18px;}
      .gendericonmale{background-position:-90px -18px;}
      .gendericontransgender{background-position:-108px -18px;}
      .downloadicon{width:18px;height:18px;display:inline-flex;align-items:center;gap:4px;background-image:url("/images/icons/icons.v2.7.webp");background-repeat:no-repeat;background-position:-126px -18px;margin-bottom:-3px;margin-right:4px;filter:brightness(0);}
      .camsiteiconssexlikereal::before{background-position:-378px -18px;}
      .camsiteiconssexchat::before{background-position:-414px 0;}
      .ctawrapper{display:flex;justify-content:center;width:100%;margin-top:15px;box-sizing:border-box;}@media(min-width:601px){.ctawrapper{justify-content:flex-start;padding-left:40px;}}
      .cta{background:#ff4d7a;color:#000;text-decoration:none;border-radius:6px;font-weight:700;text-align:center;width:200px;padding:12px 20px;display:flex;justify-content:center;align-items:center;box-sizing:border-box;}
      .cta:hover{background:#ffb3c6;color:#000;outline:2px solid #39FF14;}.camsiteStatsLink:hover{color:#ffb3c6!important;}
      .cta:focus-visible{outline:2px solid #39FF14;outline-offset:2px;}
      ul li { padding:4px; }
      .landingitemgroup { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
      .landingitem { padding-left:18px; min-width:0; }
      @media(max-width:600px){.landingitemgroup{grid-template-columns:1fr;}.landingitem{padding-left:0;}}
      @media(min-width:901px){.landingitemgroup{grid-template-columns:1fr 1fr 1fr;}}
      .wrap{width:1400px;max-width:95vw;}
      .landingitemlink { display:flex; align-items:center; justify-content:center; }
      footer { display:flex; flex-direction:row; justify-content:flex-start; gap:24px; padding-top:32px; font-size:0.85rem; color:#aaa; }
      footer a { color:#FFFFFF; text-decoration: none; }
      footer p { margin:0; }
      .h1subnote { text-align:center; color:#ff4d7a; font-size:14px; margin:-4px 0 12px; }
      .h1subnote a { color:inherit !important; text-decoration:none !important; cursor:pointer; }
      .h1subnote a:hover { color:#ff7a9c !important; text-decoration:none !important; }
      .faq{color:#ddd;line-height:1.5;}.faq h2{color:#ff4d7a;font-size:18px;font-weight:700;text-align:left;margin:24px 0 8px;border-bottom:1px solid #333;padding-bottom:4px;}.faq details{margin:0;padding:0;border-bottom:1px solid #2a2a3a;}.faq details:last-child{border-bottom:none;}.faq summary{color:#fff;font-size:15px;font-weight:600;cursor:pointer;padding:8px 0;list-style:none;display:flex;align-items:baseline;gap:10px;}.faq summary::-webkit-details-marker{display:none;}.faq summary::before{content:"\25B8";color:#ff4d7a;display:inline-block;font-size:11px;flex-shrink:0;transition:transform 0.15s;width:10px;}.faq details[open] summary::before{transform:rotate(90deg);}.faq summary:hover{color:#ff4d7a;}.faq details[open] summary{color:#ff4d7a;}.faq ul{padding-left:32px;margin:0 0 10px;}.faq li{margin:4px 0;}.faq code{background:#0d0d15;padding:2px 6px;border-radius:3px;font-size:13px;color:#ff4d7a;}.faq a{color:#ff4d7a;text-decoration:none;border:1px solid transparent;border-radius:3px;padding:0 2px;display:inline-flex;flex-direction:column;}.faq a::before{content:attr(data-text);font-weight:bold;height:0;visibility:hidden;overflow:hidden;}.faq a:hover{font-weight:bold;}
      @keyframes idxWiggle{0%,100%{transform:translateX(0);}15%{transform:translateX(-12px);}30%{transform:translateX(12px);}45%{transform:translateX(-10px);}60%{transform:translateX(10px);}75%{transform:translateX(-6px);}90%{transform:translateX(6px);}}.idx-wiggle{animation:idxWiggle 0.35s ease;}@media(max-width:1023px){.siteLayoutWideOnly{display:none!important;}}#idxPrefsBox .statsTab{font-size:17px;}
      @keyframes statsSpin{to{transform:rotate(360deg);}}.statsTabs{display:flex;gap:4px;border-bottom:2px solid #333;margin:0 0 12px 0;padding-right:40px;}.statsTab{background:transparent;border:none;color:#aaa;padding:8px 16px;font-size:15px;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;}.statsTab:hover{color:#fff;}.statsTabActive{color:#fff;border-bottom-color:#ff4d7a;}.statsSubTabs{display:flex;justify-content:center;gap:8px;margin-bottom:16px;flex-wrap:wrap;}.statsSubTab{background:#ff4d7a;color:#000;border:none;border-radius:6px;padding:10px 20px;font-weight:700;cursor:pointer;font-size:14px;text-align:center;width:110px;box-sizing:border-box;}.statsSubTab:hover{background:#ffb3c6;color:#000;outline:2px solid #39FF14;}.statsSubTabActive{background:#ffb3c6;color:#000;outline:2px solid #39FF14;}.statsLegend{display:flex;flex-direction:column;gap:4px;font-size:15px;}.statsLegendRow{display:flex;align-items:center;gap:8px;white-space:nowrap;}.statsSwatch{width:12px;height:12px;border-radius:2px;flex-shrink:0;}.statsPieWrap{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:20px;width:100%;}.statsPieWrap>.statsPieCanvas{flex:0 0 288px;max-width:288px;display:flex;flex-direction:column;}.statsHoverLabel{min-height:18px;line-height:16px;color:#fff;font-size:13px;text-align:center;padding:1px 4px;margin-bottom:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%;}.statsPieInner{height:288px;position:relative;width:100%;}.statsLegendCols{flex:1 1 200px;min-width:200px;display:flex;flex-direction:row;gap:20px;align-items:flex-start;}.statsLegendCols>.statsLegend{flex:1 1 0;min-width:0;justify-content:flex-start;}.statsFoot{width:100%;margin-top:8px;color:#fff;font-size:12px;text-align:center;opacity:.8;display:flex;flex-wrap:wrap;justify-content:center;gap:6px;}.statsFootDot{display:inline-block;}@media(max-width:640px){#statsHeading{width:100%!important;max-width:100%!important;margin:0 auto 8px auto;}.statsSubTab{width:70px;}.statsPieWrap>.statsPieCanvas{flex:0 0 auto;width:100%;max-width:288px;margin:0 auto;}.statsLegendCols{flex:1 1 100%;display:grid;grid-auto-flow:row;grid-template-columns:max-content;justify-content:center;gap:4px;}.statsLegendCols>.statsLegend{align-items:flex-start;width:auto;}.statsLegendRow{justify-content:flex-start;}.statsFoot{flex-direction:column;gap:2px;}.statsFootDot{display:none;}}
      #modalCSD .camsitelogosmall{zoom:1;opacity:0.5;outline:2px solid #5B5B5B;}#modalCSD .camsitelogosmall:hover{zoom:1;opacity:1;outline:2px solid #FFA500;}#modalCSD .camsitelogosmallselected{zoom:1;opacity:1;outline:2px solid #FFFFFF;}#csdListBody .camsitelogosmall{zoom:1;opacity:1;outline:none;}.csdNoWlGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(91px,1fr));gap:8px;justify-items:center;max-height:80px;overflow:hidden;}.csdSection{margin-bottom:22px;}.csdSectionHead{color:#39FF14;font-size:16px;margin:0 0 8px 0;}.csdSectionHeadMuted{color:#888;font-size:16px;margin:0 0 8px 0;}.csdCount{color:#fff;font-size:14px;font-weight:400;}.csdSummary{color:#fff;font-size:14px;margin-bottom:18px;}.csdSummaryNum{color:#39FF14;}.csdTable{width:100%;border-collapse:collapse;font-size:14px;table-layout:fixed;}.csdTable th{text-align:left;padding:6px 8px;color:#fff;}.csdTable thead tr{border-bottom:1px solid #444;}.csdTable td{padding:6px 8px;color:#fff;border-bottom:1px solid #1f1f2e;}.csdMono{font-family:ui-monospace,Menlo,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.csdMonoSm{font-family:ui-monospace,Menlo,monospace;font-size:13px;}.csdBar{background:#222;border-radius:10px;height:16px;overflow:hidden;position:relative;min-width:60px;}.csdBarFill{height:100%;border-radius:10px;position:relative;}.csdBarLabel{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);font-size:12px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,0.3);text-align:center;}.csdBarWrap{display:flex;align-items:center;gap:8px;}.csdErr{color:#ff4d7a;}.csdAccordion{cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:#1a1a2e;border:1px solid #333;border-radius:6px;margin-bottom:2px;user-select:none;}.csdAccordion:hover{background:#222240;}.csdArrow{transition:transform 0.2s;font-size:14px;color:#888;}.csdArrow.open{transform:rotate(90deg);}.csdAccBody{display:none;padding:8px 0 16px 0;}.csdAccBody.open{display:block;}#csdListBody .camsitelogo,#modalCSD .camsitelogo{width:91px;height:26px;background-image:url("/images/icons/camsitelogos.small.v2.15.webp");background-repeat:no-repeat;}#csdListBody .camsitelogoamateur,#modalCSD .camsitelogoamateur{background-position:0 0;}#csdListBody .camsitelogobongacams,#modalCSD .camsitelogobongacams{background-position:0 -26px;}#csdListBody .camsitelogocam4,#modalCSD .camsitelogocam4{background-position:0 -52px;}#csdListBody .camsitelogocams,#modalCSD .camsitelogocams{background-position:0 -78px;}#csdListBody .camsitelogocamsoda,#modalCSD .camsitelogocamsoda{background-position:0 -104px;}#csdListBody .camsitelogochaturbate,#modalCSD .camsitelogochaturbate{background-position:0 -130px;}#csdListBody .camsitelogocherrytv,#modalCSD .camsitelogocherrytv{background-position:0 -156px;}#csdListBody .camsitelogodreamcam,#modalCSD .camsitelogodreamcam{background-position:0 -182px;}#csdListBody .camsitelogoeplay,#modalCSD .camsitelogoeplay{background-position:0 -208px;}#csdListBody .camsitelogoflirt4free,#modalCSD .camsitelogoflirt4free{background-position:0 -234px;}#csdListBody .camsitelogoimlive,#modalCSD .camsitelogoimlive{background-position:0 -260px;}#csdListBody .camsitelogomfc,#modalCSD .camsitelogomfc,#csdListBody .camsitelogomyfreecams,#modalCSD .camsitelogomyfreecams{background-position:0 -286px;}#csdListBody .camsitelogomanyvids,#modalCSD .camsitelogomanyvids{background-position:0 -312px;}#csdListBody .camsitelogosakuralivejp,#modalCSD .camsitelogosakuralivejp,#csdListBody .camsitelogosakuralive,#modalCSD .camsitelogosakuralive{background-position:0 -338px;}#csdListBody .camsitelogoshowup,#modalCSD .camsitelogoshowup{background-position:0 -364px;}#csdListBody .camsitelogostreamate,#modalCSD .camsitelogostreamate{background-position:0 -390px;}#csdListBody .camsitelogostripchat,#modalCSD .camsitelogostripchat{background-position:0 -416px;}#csdListBody .camsitelogoxlovecam,#modalCSD .camsitelogoxlovecam{background-position:0 -442px;}#csdListBody .camsitelogozbiornik,#modalCSD .camsitelogozbiornik{background-position:0 -468px;}#csdListBody .camsitelogoasiancammodels,#modalCSD .camsitelogoasiancammodels{background-position:0 -494px;}#csdListBody .camsitelogoolecams,#modalCSD .camsitelogoolecams{background-position:0 -520px;}#csdListBody .camsitelogosoulcams,#modalCSD .camsitelogosoulcams{background-position:0 -546px;}#csdListBody .camsitelogolivejasmin,#modalCSD .camsitelogolivejasmin{background-position:0 -572px;}#csdListBody .camsitelogofc2live,#modalCSD .camsitelogofc2live{background-position:0 -598px;}#csdListBody .camsitelogoxcams,#modalCSD .camsitelogoxcams{background-position:0 -624px;}#csdListBody .camsitelogosexchat,#modalCSD .camsitelogosexchat{background-position:0 -690px;}#csdListBody .camsitelogosexlikereal,#modalCSD .camsitelogosexlikereal{background-position:0 -716px;}#csdListBody .camsitelogosmall,#modalCSD .camsitelogosmall{zoom:1;opacity:1;outline:none;}.csdViewAll{background:#ff4d7a;color:#000;border:none;border-radius:6px;padding:10px 18px;font-size:14px;font-weight:700;cursor:pointer;}.csdViewAll:hover{background:#ff3d6a;}@keyframes csdSpin{to{transform:rotate(360deg);}}.csdSpinner{width:48px;height:48px;border:4px solid #333;border-top-color:#ff4d7a;border-radius:50%;animation:csdSpin 1s linear infinite;margin:0 auto;}
    </style>
    <link rel="preload" href="/styles/styles.v2.9.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
    <noscript><link rel="stylesheet" href="/styles/styles.v2.9.css"></noscript>
    <link rel="canonical" href="https://www.camshowarchives.com">
    <title>Cam Show Archives – 26M+ Webcam Show Recordings</title>
    <link rel="alternate" hreflang="en" href="https://www.camshowarchives.com">
    <meta name="robots" content="index, follow">
    <meta name="description" content="Cam Show Archives is the largest webcam recording archive on the internet, with recordings dating back to 2013. Search by model name or facial recognition.">
    <meta property="og:url" content="https://www.camshowarchives.com">
    <meta property="og:type" content="website">
    <meta property="og:title" content="Cam Show Archives | The Ultimate Archive for Cam Show Recordings">
    <meta property="og:description" content="25,782,841 archived cam shows totaling 7,754 Terabytes of video">
    <meta property="og:image" content="https://www.camshowarchives.com/oglogo.webp">
    <meta property="og:site_name" content="Cam Show Archives">
    <meta name="twitter:card" content="summary_large_image">
    <script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","name":"Cam Show Archives","url":"https://www.camshowarchives.com"},{"@type":"Organization","name":"Cam Show Archives","url":"https://www.camshowarchives.com","logo":"https://www.camshowarchives.com/favicon-v3.png"}]}</script>
  <style>
    #idxPrefsBox .resolutionbadge{height:26px;min-width:28px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px;box-sizing:border-box;font:bold 15px/1 Arial,sans-serif;letter-spacing:0.5px;border-radius:6px;}
    #idxPrefsBox .resolutionbadge.resolutionsd{background:#726870;color:#fff;}#idxPrefsBox .resolutionbadge.resolutionsd::before{content:"SD";}
    #idxPrefsBox .resolutionbadge.resolutionhd{background:#BFBFBF;color:#000;}#idxPrefsBox .resolutionbadge.resolutionhd::before{content:"HD";}
    #idxPrefsBox .resolutionbadge.resolutionfhd{background:#D4AE41;color:#000;}#idxPrefsBox .resolutionbadge.resolutionfhd::before{content:"FHD";}
    #idxPrefsBox .resolutionbadge.resolutionqhd{background:#604D80;color:#fff;}#idxPrefsBox .resolutionbadge.resolutionqhd::before{content:"QHD";}
    #idxPrefsBox .resolutionbadge.resolutionuhd{background:#1B171D;color:#0aaeed;}#idxPrefsBox .resolutionbadge.resolutionuhd::before{content:"UHD";}
    .admin-sidebar{position:fixed;left:0;top:0;bottom:0;width:180px;background:#15151f;border-right:1px solid #2a2a3a;padding:18px 0;overflow-y:auto;z-index:10000;box-sizing:border-box;transform:translateX(-100%);transition:transform 0.25s ease;box-shadow:2px 0 12px rgba(0,0,0,0.6);}body.sidebar-open .admin-sidebar{transform:translateX(0);}body.sidebar-closing .admin-sidebar{transform:translateX(-100%);transition:transform 1.5s ease;}
    .admin-hotedge{position:fixed;left:0;top:0;bottom:0;width:12px;z-index:10002;}body.sidebar-open .admin-hotedge{display:none;}
    .admin-sidebar .sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:0 14px 14px 18px;border-bottom:1px solid #2a2a3a;margin-bottom:10px;}
    .admin-sidebar .brand{color:#ff4d7a;font-weight:700;font-size:18px;text-decoration:none;display:flex;align-items:center;gap:8px;background:transparent;border:none;padding:0;cursor:pointer;}
    .admin-sidebar .brand img{width:24px;height:24px;display:block;border-radius:50%;}
    .admin-sidebar .brand-mobile{display:none;}
    @media(max-width:900px){.admin-sidebar .brand-desktop{display:none;}.admin-sidebar .brand-mobile{display:flex;}}
    .admin-sidebar .collapse-btn{background:transparent;color:#888;border:none;font-size:20px;cursor:pointer;padding:4px 8px;line-height:1;border-radius:4px;}
    .admin-sidebar .collapse-btn:hover{color:#ff4d7a;background:#1f1f2e;}
    .admin-sidebar .group{padding:10px 0 6px;}
    .admin-sidebar .group-label{color:#999;font-size:11px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;padding:0 18px 6px;}
    .admin-sidebar a:not(.brand){display:block;color:#ddd;text-decoration:none;padding:7px 18px;font-size:14px;font-weight:500;border-left:3px solid transparent;}
    .admin-sidebar a:not(.brand):hover{background:#1f1f2e;color:#ff4d7a;border-left-color:#ff4d7a;}
    .admin-burger{position:fixed;top:10px;left:10px;z-index:10001;background:#ff4d7a;color:#fff;border:none;border-radius:6px;padding:8px 12px;font-size:20px;line-height:1;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,0.4);}html[data-hide-burger="1"] .admin-burger{display:none!important;}
    .admin-burger:hover{background:#ff2050;}body.sidebar-open .admin-burger{display:none;}html[data-sidebar-always="1"] body{padding-left:180px;box-sizing:border-box;}html[data-sidebar-always="1"] .wrap{max-width:calc(95vw - 190px);}html[data-sidebar-always="1"] .wrap:has(.recordings),html[data-sidebar-always="1"] .wrap:has(#recordingpage){width:calc(95vw - 190px);max-width:none;}@media(max-width:1023px){html[data-sidebar-always="1"] body{padding-left:0;}html[data-sidebar-always="1"] .wrap{max-width:95vw;}}
    @media (max-width:768px){.breadcrumb-wrapper{margin:48px auto 0;max-width:90vw;}}
    html[data-card-size] .recording{width:var(--csaCardW,400px)!important;}
  </style>
  <script>
    function csaToggleSidebar(){var o=document.body.classList.toggle("sidebar-open");try{localStorage.setItem("csaSidebarOpen",o);}catch(e){}}
    (function(){var s,a;try{s=localStorage.getItem("csaSidebarOpen");a=localStorage.getItem("csaSidebarAlways");}catch(e){}var alwaysOn=(a!=="0"&&window.innerWidth>=1024);var o=alwaysOn||(s===null?window.innerWidth>900:s==="true");if(o){document.documentElement.dataset.sidebar="open";}if(alwaysOn){document.documentElement.dataset.sidebarAlways="1";}})();(function(){try{if(localStorage.getItem("csaHideBurger")==="1"&&window.innerWidth>=1024)document.documentElement.dataset.hideBurger="1";}catch(e){}})();(function(){try{if(localStorage.getItem("csaDisableArrows")==="1")document.documentElement.dataset.disableArrows="1";}catch(e){}})();(function(){try{var cw=localStorage.getItem("csaCardSize");if(cw&&/^[0-9]{2,4}$/.test(cw)&&cw!=="400"){document.documentElement.style.setProperty("--csaCardW",cw+"px");document.documentElement.dataset.cardSize=cw;}}catch(e){}})();(function(){window.csaArrowGate=true;var tx=0;window.addEventListener("keydown",function(e){if(document.documentElement.dataset.disableArrows==="1"&&(e.key==="ArrowLeft"||e.key==="ArrowRight"))e.stopPropagation();},true);window.addEventListener("touchstart",function(e){tx=e.changedTouches[0].screenX;},{capture:true,passive:true});window.addEventListener("touchend",function(e){if(document.documentElement.dataset.disableArrows!=="1")return;var dx=e.changedTouches[0].screenX-tx;if(Math.abs(dx)>=50)e.stopPropagation();},true);})();
    document.addEventListener("DOMContentLoaded",function(){if(document.documentElement.dataset.sidebar==="open"){document.body.classList.add("sidebar-open");}var sb=document.querySelector(".admin-sidebar"),he=document.querySelector(".admin-hotedge"),bg=document.querySelector(".admin-burger");if(!sb)return;if(bg){bg.addEventListener("mouseenter",openSidebar);}function openSidebar(){document.body.classList.remove("sidebar-closing");document.body.classList.add("sidebar-open");try{localStorage.setItem("csaSidebarOpen",true);}catch(e){}}function closeSidebar(){try{if(localStorage.getItem("csaSidebarAlways")!=="0"&&window.innerWidth>=1024)return;}catch(e){}if(!document.body.classList.contains("sidebar-open"))return;document.body.classList.remove("sidebar-open");try{localStorage.setItem("csaSidebarOpen",false);}catch(e){}}sb.addEventListener("mouseleave",closeSidebar);sb.addEventListener("mouseenter",openSidebar);if(he){he.addEventListener("mouseenter",openSidebar);}document.addEventListener("mousemove",function(e){if(!document.body.classList.contains("sidebar-open"))return;if(e.clientX<=180)return;if(sb.contains(e.target)||(he&&he.contains(e.target)))return;closeSidebar();});sb.addEventListener("click",function(e){var __ml=e&&e.target&&e.target.closest&&e.target.closest(".csa-modal-link");if(__ml){var __ap=document.getElementById("adminPrefsModal");if(__ap&&__ap.style.display&&__ap.style.display!=="none"&&typeof idxTryClose==="function"){idxTryClose();}var __fm=document.getElementById("filterModal");if(__fm&&__fm.style.display&&__fm.style.display!=="none"){if(typeof afSave==="function"){try{afSave();}catch(_e){}}__fm.style.display="none";}var __mc=document.getElementById("modalCSD"),__mcl=document.getElementById("modalCSDList");var __mcO=__mc&&__mc.style.display&&__mc.style.display!=="none";var __mclO=__mcl&&__mcl.style.display&&__mcl.style.display!=="none";if(__mcO||__mclO){if(__mc)__mc.style.display="none";if(__mcl)__mcl.style.display="none";if(window.csdOrigUrl){try{history.replaceState(null,"",window.csdOrigUrl);}catch(_e){}window.csdOrigUrl=null;}}var __ms=document.getElementById("modalStats");if(__ms&&__ms.style.display&&__ms.style.display!=="none"&&typeof csaCloseStats==="function"){csaCloseStats();}var __m2257=document.getElementById("modal2257");if(__m2257&&__m2257.style.display&&__m2257.style.display!=="none"&&typeof csa2257Close==="function"){csa2257Close();}var __mfq=document.getElementById("modalFaq");if(__mfq&&__mfq.style.display&&__mfq.style.display!=="none"&&typeof csaFaqClose==="function"){csaFaqClose();}return;}var __navA=e&&e.target&&e.target.closest&&e.target.closest("a");if(__navA){var __h=__navA.getAttribute("href");if(__h&&__h!=="#"&&__h.indexOf("javascript:")!==0)return;}var ap=document.getElementById("adminPrefsModal");if(ap&&ap.style.display&&ap.style.display!=="none"&&typeof idxTryClose==="function"){idxTryClose();}var fm=document.getElementById("filterModal");if(fm&&fm.style.display&&fm.style.display!=="none"){if(typeof afSave==="function"){try{afSave();}catch(e2){}}fm.style.display="none";}var mc=document.getElementById("modalCSD"),mcl=document.getElementById("modalCSDList");var mcOpen=mc&&mc.style.display&&mc.style.display!=="none";var mclOpen=mcl&&mcl.style.display&&mcl.style.display!=="none";if(mcOpen||mclOpen){if(mc)mc.style.display="none";if(mcl)mcl.style.display="none";if(window.csdOrigUrl){try{history.replaceState(null,"",window.csdOrigUrl);}catch(e3){}window.csdOrigUrl=null;}}var ms=document.getElementById("modalStats");if(ms&&ms.style.display&&ms.style.display!=="none"&&typeof csaCloseStats==="function"){csaCloseStats();}var m2257=document.getElementById("modal2257");if(m2257&&m2257.style.display&&m2257.style.display!=="none"&&typeof csa2257Close==="function"){csa2257Close();}var mfq=document.getElementById("modalFaq");if(mfq&&mfq.style.display&&mfq.style.display!=="none"&&typeof csaFaqClose==="function"){csaFaqClose();}},true);var prefModal=document.getElementById("adminPrefsModal");if(prefModal){function apOnOpen(){if(window.csaPrefsOrigUrl)return;window.csaPrefsOrigUrl=location.pathname+location.search+location.hash;var __t=window.dispActiveTab||"filter-recordings";try{history.replaceState(null,"","/options/display/"+__t);}catch(e){}}function apOnClose(){if(!window.csaPrefsOrigUrl)return;try{history.replaceState(null,"",window.csaPrefsOrigUrl);}catch(e){}window.csaPrefsOrigUrl=null;}var lastDisp=prefModal.style.display||"none";new MutationObserver(function(){var d=prefModal.style.display||"none";if(d===lastDisp)return;if(d!=="none"&&lastDisp==="none")apOnOpen();else if(d==="none"&&lastDisp!=="none")apOnClose();lastDisp=d;}).observe(prefModal,{attributes:true,attributeFilter:["style"]});if(location.pathname==="/options/display/filter-recordings"||location.pathname==="/options/display/site-layout"||location.pathname==="/options/display/show-types"){setTimeout(function(){var tab=location.pathname.split("/").pop();window.dispActiveTab=tab;window.csaPrefsOrigUrl="/";var box=document.getElementById("idxPrefsBox");if(box){box.querySelectorAll(".statsTab").forEach(function(b){b.classList.toggle("statsTabActive",b.dataset.tab===tab);});box.querySelectorAll(".dispTabContent").forEach(function(c){c.style.display=c.dataset.tab===tab?"block":"none";});}if(typeof idxLoadLS==="function")idxLoadLS();if(typeof window.dispLoadCheckboxes==="function")window.dispLoadCheckboxes();prefModal.style.display="flex";},100);}window.dispActiveTab=window.dispActiveTab||"filter-recordings";window.dispSwitchTab=function(name){window.dispActiveTab=name;var box=document.getElementById("idxPrefsBox");if(!box)return;box.querySelectorAll(".statsTab").forEach(function(b){b.classList.toggle("statsTabActive",b.dataset.tab===name);});box.querySelectorAll(".dispTabContent").forEach(function(c){c.style.display=c.dataset.tab===name?"block":"none";});if(window.csaPrefsOrigUrl){try{history.replaceState(null,"","/options/display/"+name);}catch(e){}}};window.dispOpen=function(tab){window.dispActiveTab=tab||"filter-recordings";if(typeof idxLoadLS==="function")idxLoadLS();var box=document.getElementById("idxPrefsBox");if(box){box.querySelectorAll(".statsTab").forEach(function(b){b.classList.toggle("statsTabActive",b.dataset.tab===window.dispActiveTab);});box.querySelectorAll(".dispTabContent").forEach(function(c){c.style.display=c.dataset.tab===window.dispActiveTab?"block":"none";});}if(typeof window.dispLoadCheckboxes==="function")window.dispLoadCheckboxes();var m=document.getElementById("adminPrefsModal");if(m)m.style.display="flex";};window.dispToggleAlwaysSidebar=function(cb){try{if(cb.checked)localStorage.removeItem("csaSidebarAlways");else localStorage.setItem("csaSidebarAlways","0");}catch(e){}if(cb.checked&&window.innerWidth>=1024){document.body.classList.add("sidebar-open");document.documentElement.dataset.sidebarAlways="1";try{localStorage.setItem("csaSidebarOpen","true");}catch(e){}}if(!cb.checked){delete document.documentElement.dataset.sidebarAlways;}var d=document.getElementById("dispAlwaysSidebarDefaults");if(d)d.style.display=cb.checked?"none":"";};window.dispResetAlwaysSidebar=function(){try{localStorage.removeItem("csaSidebarAlways");}catch(e){}var cb=document.getElementById("dispAlwaysSidebar");if(cb)cb.checked=true;if(window.innerWidth>=1024){document.body.classList.add("sidebar-open");document.documentElement.dataset.sidebarAlways="1";try{localStorage.setItem("csaSidebarOpen","true");}catch(e){}}var d=document.getElementById("dispAlwaysSidebarDefaults");if(d)d.style.display="none";};window.dispToggleAutoMute=function(cb){try{if(cb.checked){localStorage.setItem("plyr-muted","1");}else{localStorage.setItem("plyr-muted","0");}}catch(e){}var d=document.getElementById("dispAutoMuteDefaults");if(d)d.style.display=cb.checked?"":"none";};window.dispResetAutoMute=function(){try{localStorage.removeItem("plyr-muted");}catch(e){}var cb=document.getElementById("dispAutoMute");if(cb)cb.checked=false;var d=document.getElementById("dispAutoMuteDefaults");if(d)d.style.display="none";};window.dispToggleHideBurger=function(cb){try{if(cb.checked)localStorage.setItem("csaHideBurger","1");else localStorage.removeItem("csaHideBurger");}catch(e){}if(cb.checked&&window.innerWidth>=1024){document.documentElement.dataset.hideBurger="1";}else{delete document.documentElement.dataset.hideBurger;}var d=document.getElementById("dispHideBurgerDefaults");if(d)d.style.display=cb.checked?"":"none";};window.dispResetHideBurger=function(){try{localStorage.removeItem("csaHideBurger");}catch(e){}delete document.documentElement.dataset.hideBurger;var cb=document.getElementById("dispHideBurger");if(cb)cb.checked=false;var d=document.getElementById("dispHideBurgerDefaults");if(d)d.style.display="none";};window.dispToggleDisableArrows=function(cb){try{if(cb.checked)localStorage.setItem("csaDisableArrows","1");else localStorage.removeItem("csaDisableArrows");}catch(e){}if(cb.checked){document.documentElement.dataset.disableArrows="1";}else{delete document.documentElement.dataset.disableArrows;}var d=document.getElementById("dispDisableArrowsDefaults");if(d)d.style.display=cb.checked?"":"none";};window.dispResetDisableArrows=function(){try{localStorage.removeItem("csaDisableArrows");}catch(e){}delete document.documentElement.dataset.disableArrows;var cb=document.getElementById("dispDisableArrows");if(cb)cb.checked=false;var d=document.getElementById("dispDisableArrowsDefaults");if(d)d.style.display="none";};window.dispSetCategoryOrder=function(order){try{if(order==="alpha")localStorage.setItem("csaCategorySort","alpha");else localStorage.removeItem("csaCategorySort");}catch(e){}document.querySelectorAll(".catOrderBtn").forEach(function(b){b.classList.toggle("vtOptSel",b.dataset.order===order);});var inPage=document.querySelector('.catSortBtn[data-sort="'+order+'"]');if(inPage)inPage.click();};window.dispSetCardSize=function(sz){try{if(sz&&sz!=="400")localStorage.setItem("csaCardSize",sz);else localStorage.removeItem("csaCardSize");}catch(e){}if(sz&&sz!=="400"){document.documentElement.style.setProperty("--csaCardW",sz+"px");document.documentElement.dataset.cardSize=sz;}else{document.documentElement.style.removeProperty("--csaCardW");delete document.documentElement.dataset.cardSize;}document.querySelectorAll(".cardSizeBtn").forEach(function(b){b.classList.toggle("vtOptSel",b.dataset.size===sz);});var d=document.getElementById("dispCardSizeDefaults");if(d)d.style.display=(sz&&sz!=="400")?"":"none";};window.dispResetCardSize=function(){try{localStorage.removeItem("csaCardSize");}catch(e){}document.documentElement.style.removeProperty("--csaCardW");delete document.documentElement.dataset.cardSize;document.querySelectorAll(".cardSizeBtn").forEach(function(b){b.classList.toggle("vtOptSel",b.dataset.size==="400");});var d=document.getElementById("dispCardSizeDefaults");if(d)d.style.display="none";};window.dispLoadCheckboxes=function(){try{var cb=document.getElementById("dispAlwaysSidebar");if(cb){cb.checked=localStorage.getItem("csaSidebarAlways")!=="0";var d=document.getElementById("dispAlwaysSidebarDefaults");if(d)d.style.display=cb.checked?"none":"";}var am=document.getElementById("dispAutoMute");if(am){am.checked=localStorage.getItem("plyr-muted")==="1";var ad=document.getElementById("dispAutoMuteDefaults");if(ad)ad.style.display=am.checked?"":"none";}var co=localStorage.getItem("csaCategorySort")==="alpha"?"alpha":"popular";document.querySelectorAll(".catOrderBtn").forEach(function(b){b.classList.toggle("vtOptSel",b.dataset.order===co);});var cz=localStorage.getItem("csaCardSize");cz=(cz&&/^[0-9]{2,4}$/.test(cz))?cz:"400";document.querySelectorAll(".cardSizeBtn").forEach(function(b){b.classList.toggle("vtOptSel",b.dataset.size===cz);});var czd=document.getElementById("dispCardSizeDefaults");if(czd)czd.style.display=(cz!=="400")?"":"none";var hb=document.getElementById("dispHideBurger");if(hb){hb.checked=localStorage.getItem("csaHideBurger")==="1";var hbd=document.getElementById("dispHideBurgerDefaults");if(hbd)hbd.style.display=hb.checked?"":"none";}var da=document.getElementById("dispDisableArrows");if(da){da.checked=localStorage.getItem("csaDisableArrows")==="1";var dad=document.getElementById("dispDisableArrowsDefaults");if(dad)dad.style.display=da.checked?"":"none";}}catch(e){}};}});
  </script>
  </head>
  <body>
    <button class="admin-burger" onclick="csaToggleSidebar()" aria-label="Toggle menu">&#9776;</button>
    <aside class="admin-sidebar" aria-label="Admin navigation">
      <div class="sidebar-header">
        <a class="brand brand-desktop" href="/"><img src="/favicon.webp" alt="CSA" width="24" height="24"></a>
        <button class="brand brand-mobile" onclick="csaToggleSidebar()" aria-label="Close menu"><img src="/favicon.webp" alt="CSA" width="24" height="24"></button>
        <button class="collapse-btn" onclick="csaToggleSidebar()" aria-label="Collapse Menu" title="Collapse Menu">&#10094;</button>
      </div>
      <div class="group"><div class="group-label">Recordings By</div>
        <a href="/latest/page/1">Latest</a>
        <a href="/models">Cam Model</a>
        <a href="/camsites">Cam Site</a>
        <a href="/categories">Category</a>
        <a href="/filehosts">File Host</a>
        <a href="/genders">Gender</a>
        <a href="/archives">Archives</a>
      </div>
      <div class="group"><div class="group-label">Popular</div>
        <a href="/most-viewed/page/1">Most Viewed</a>
        <a href="/most-liked/page/1">Most Liked</a>
      </div>
      <div class="group"><div class="group-label">Search By</div>
        <a href="/search" rel="nofollow">Model Name</a>
        <a href="/search" rel="nofollow">Facial Recognition</a>
      </div>
      <div class="group"><div class="group-label">Other</div>
        <a class="csa-modal-link" href="/options/display/filter-recordings" onclick="dispOpen('filter-recordings');event.preventDefault();">Display Options</a>
        <a class="csa-modal-link" href="/white-label-detector" onclick="event.preventDefault();csdOpen();return false;">White Label Detector</a>
        <a class="csa-modal-link" href="/stats" onclick="csaOpenStats();event.preventDefault();">Stats</a>
        <a class="csa-modal-link" href="/site-status" onclick="csaSiteStatusOpen();event.preventDefault();">Site Status</a>
        <a class="csa-modal-link" href="/faq" onclick="csaFaqOpen();event.preventDefault();">FAQ</a>
        <a class="csa-modal-link" href="/2257" onclick="csa2257Open();event.preventDefault();">2257</a>
      </div>
    </aside>
    <div class="admin-hotedge"></div>
    <div id="modal2257" style="display:none;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.8);justify-content:center;align-items:center;" onclick="if(event.target===this){csa2257Close();}">
      <div style="background:#15151f;border:2px solid #333;border-radius:12px;padding:24px;max-width:700px;width:90vw;max-height:80vh;overflow-y:auto;color:#ddd;line-height:1.5;" onclick="event.stopPropagation()">
        <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;">
          <span style="color:#fff;font-size:20px;font-weight:700;">18 U.S.C. &sect; 2257 Compliance Statement</span>
          <button onclick="csa2257Close()" style="background:transparent;border:none;color:#fff;font-size:30px;cursor:pointer;line-height:1;">&times;</button>
        </div>
        <p>All models, actors, actresses, and other persons that appear in any visual depiction of actual sexually explicit conduct appearing or otherwise contained in this website were over the age of eighteen years at the time of the creation of such depictions.</p>
        <p>With respect to all visual depictions displayed on this website, whether of actual sexually explicit conduct, simulated sexual content or otherwise, all persons in said visual depictions were at least 18 years of age when said visual depictions were created.</p>
        <p>The owners and operators of this website are not the primary producer (as that term is defined in 18 USC &sect; 2257) of any of the visual content contained in the website.</p>
        <p>For the purposes of 18 U.S.C. &sect; we are not a producer (primary or secondary) of any content found on this website.</p>
        <p>For &sect; 2257 records for any content found on this website, please direct your request to the producer or site which produced the content.</p>
      </div>
    </div>
    <script>
      window.csa2257OrigUrl=null;
      window.csa2257Open=function(){if(!window.csa2257OrigUrl)window.csa2257OrigUrl=location.pathname+location.search+location.hash;history.replaceState(null,"","/2257");document.getElementById("modal2257").style.display="flex";};
      window.csa2257Close=function(){document.getElementById("modal2257").style.display="none";if(window.csa2257OrigUrl){history.replaceState(null,"",window.csa2257OrigUrl);window.csa2257OrigUrl=null;}};
      (function(){if(location.pathname==="/2257"){setTimeout(function(){window.csa2257OrigUrl="/";csa2257Open();},100);}})();
    </script>
    <div id="modalFaq" style="display:none;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.8);justify-content:center;align-items:center;" onclick="if(event.target===this){csaFaqClose();}">
      <div id="faqBox" style="background:#15151f;border:2px solid #333;border-radius:12px;padding:24px;max-width:600px;width:90vw;max-height:90vh;overflow-y:auto;" onclick="event.stopPropagation()">
        <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;">
          <span style="color:#fff;font-size:22px;font-weight:700;">FAQ</span>
          <button onclick="csaFaqClose()" style="background:transparent;border:none;color:#fff;font-size:32px;cursor:pointer;line-height:1;">&times;</button>
        </div>
<section class="faq">

  <h2>What gets recorded</h2>

  <details>
    <summary>Which shows get recorded?</summary>
    <ul>
      <li>Coverage varies by cam site, but the most-viewed models on the most-popular sites are the most likely to have recordings.</li>
    </ul>
  </details>

  <details>
    <summary>Are private, true-private, group, or members-only shows ever recorded?</summary>
    <ul>
      <li>Never. Free, public streams only.</li>
    </ul>
  </details>

  <details>
    <summary>Why aren't there recordings from <em>camsitexyz</em>?</summary>
    <ul>
      <li>If a cam site isn't represented, it's because that site doesn't offer free or public streams. If it did, it would be recorded.</li>
      <li>The cam sites currently covered are listed on the <a href="/camsites" data-text="Cam Sites">Cam Sites</a> index, and the streaming technologies behind them are broken down on the <a href="/stats/stream-sources" data-text="Stream Sources">Stream Sources</a> stats page.</li>
    </ul>
  </details>


  <h2>Recording format &amp; files</h2>

  <details>
    <summary>Why is a recording not as long as the model streamed for?</summary>
    <ul>
      <li>To keep file sizes and quality manageable, the maximum duration of any single recording is one hour. When that limit is reached the recorder restarts cleanly, so a longer broadcast is split across consecutive one-hour recordings on the model's <a href="/models" data-text="page">page</a>.</li>
    </ul>
  </details>

  <details>
    <summary>How are recording files named?</summary>
    <p style="margin:8px 0 4px 14px;"><strong style="color:#fff;">Example:</strong> <code>camSite-gender-showType-modelName-YYYY-MM-DD-HHMMSS.mp4</code></p>
    <ul>
      <li>The timestamp is the moment the recording started.</li>
      <li><strong>Note:</strong> All recording servers are set to the UTC timezone, so the timestamp in every filename is UTC — not local time.</li>
    </ul>
  </details>

  <details>
    <summary>Are recordings re-encoded?</summary>
    <ul>
      <li>Recordings are kept in whatever format the live stream originally delivered.</li>
      <li>A quick ffmpeg pass runs after each recording to repair seek-time drift that live streams sometimes introduce — same codec, same quality, no re-encoding.</li>
      <li>Watermarks are never added.</li>
    </ul>
  </details>

  <details>
    <summary>Chats are summarized — why not include a full transcript?</summary>
    <ul>
      <li>Embedding chat as subtitle tracks was attempted early on and fell apart in the busiest rooms — too much text, too little screen, unreadable in the chaos.</li>
      <li>Piping the full chat log through an LLM produces a much cleaner, more skimmable description of what happened during the show — similar to how Amazon condenses product reviews.</li>
    </ul>
  </details>

  <details>
    <summary>How are Tokens Tipped calculated on a recording page?</summary>
    <ul>
      <li>Tokens Tipped is only the number of tokens tipped during the duration of that recording.</li>
    </ul>
  </details>


  <h2>Downloads &amp; file hosts</h2>

  <details>
    <summary>Why use multiple file hosts instead of just one?</summary>
    <ul>
      <li>FileBoom, TezFiles, and Upstore have each delivered consistent uptime for over a decade — a rarity in the file-hosting world.</li>
      <li>The archive currently holds 8 PetaBytes (7,754 TB) of content and adds roughly 22.48 TB every 24 hours, so spreading uploads across three providers keeps any single one from being inundated.</li>
      <li>TezFiles takes a slightly larger share because their ingest is faster, but the split is kept as even as practical.</li>
      <li>Per-host breakdowns are on the <a href="/stats/file-hosts" data-text="file-host stats page">file-host stats page</a>.</li>
      <li>To filter recordings to a specific file host, use the <strong>Filter Recordings</strong> tab inside <a href="/options/display/filter-recordings" data-text="Display Options">Display Options</a>.</li>
    </ul>
  </details>

  <details>
    <summary>Why aren't full videos streamed directly from the site?</summary>
    <ul>
      <li>Hosting 8 PetaBytes locally for the multi-year retention windows the file hosts provide isn't feasible at this scale. Long-term availability is what the file hosts are good at.</li>
    </ul>
  </details>


  <h2>Finding content</h2>

  <details>
    <summary>What is the facial recognition search and how does it work?</summary>
    <ul>
      <li>Upload, drag-and-drop, or paste an image of a model's face on the <a href="/search#face-search" data-text="Search page">Search page</a>, and matching models from the archive are returned within a few seconds.</li>
      <li>A face-detection model locates each face in the upload, generates a numeric embedding (a 512-dimension vector that describes the face), then compares it against an index of embeddings extracted from preview frames of every recording.</li>
      <li>Models scoring above the similarity threshold are ranked and returned, with a direct link to each model's recording history.</li>
      <li>The face index covers every recording that has a video preview, so it works across cam sites as well as within a single one — useful when a model's screen name has changed, isn't known, or the same person streams under different aliases on different platforms; cross-site matches surface automatically.</li>
      <li>The uploaded image is discarded the moment the search completes. Nothing is stored, indexed, or associated with the visitor, and the index itself only contains faces extracted from public recordings — no face data from any outside source is ever ingested.</li>
    </ul>
  </details>

  <details>
    <summary>How does voting on recordings work, and what's it for?</summary>
    <ul>
      <li>Each recording page has a thumbs-up / thumbs-down control. The aggregated score of those votes is what feeds the <a href="/most-liked/page/1" data-text="Most Liked">Most Liked</a> page — totally separate from the view-count-driven <a href="/most-viewed/page/1" data-text="Most Viewed">Most Viewed</a> page.</li>
    </ul>
  </details>


  <h2>Privacy &amp; site behavior</h2>

  <details>
    <summary>Are visitors tracked? Is personal information collected?</summary>
    <ul>
      <li>No personal data, traffic data, or behavioral profiles are collected. Automated systems handle malicious bots — that's the extent of it.</li>
      <li>View counts and votes are aggregated solely to determine the <a href="/most-viewed/page/1" data-text="most-viewed">most-viewed</a> and <a href="/most-liked/page/1" data-text="most-liked">most-liked</a> recordings.</li>
      <li>Cookies are not required to browse recordings.</li>
      <li>Interactive preferences (such as <a href="/options/display/filter-recordings" data-text="Display Options">Display Options</a>) live entirely in the browser's localStorage and are never sent back to the server.</li>
    </ul>
  </details>

  <details>
    <summary>Can ad blockers be used on this site?</summary>
    <ul>
      <li>Yes — there have never been ads here and never will be. No site functionality is known to be affected by any ad blocker.</li>
    </ul>
  </details>

  <details>
    <summary>Why am I being asked to solve a CAPTCHA?</summary>
    <ul>
      <li>A non-invasive CAPTCHA system protects against scrapers and malicious bots. For normal browsing it should be virtually invisible — most visitors will never see it. If it appears unexpectedly, simply solving it once is usually enough to be cleared for the rest of the session.</li>
    </ul>
  </details>

</section>
      </div>
    </div>
    <script>
      window.csaFaqOrigUrl=null;
      window.csaFaqOpen=function(){if(!window.csaFaqOrigUrl)window.csaFaqOrigUrl=location.pathname+location.search+location.hash;history.replaceState(null,"","/faq");document.getElementById("modalFaq").style.display="flex";};
      window.csaFaqClose=function(){document.getElementById("modalFaq").style.display="none";if(window.csaFaqOrigUrl){history.replaceState(null,"",window.csaFaqOrigUrl);window.csaFaqOrigUrl=null;}};
      (function(){if(location.pathname==="/faq"){setTimeout(function(){window.csaFaqOrigUrl="/";csaFaqOpen();},100);}})();
    </script>
    <div id="modalStats" style="display:none;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.8);justify-content:center;align-items:center;" onclick="if(event.target===this){csaCloseStats();}">
      <div style="position:relative;background:#15151f;border:2px solid #333;border-radius:12px;padding:24px;max-width:768px;width:90vw;height:620px;max-height:90vh;overflow-y:auto;scrollbar-gutter:stable;color:#fff;line-height:1.5;" onclick="event.stopPropagation()">
        <button onclick="csaCloseStats()" style="position:absolute;top:12px;right:16px;background:transparent;border:none;color:#fff;font-size:30px;cursor:pointer;line-height:1;">&times;</button>
        <div class="statsTabs"><button class="statsTab statsTabActive" data-tab="camsites" onclick="csaStatsTab(this,'camsites')">Cam Sites</button><button class="statsTab" data-tab="genders" onclick="csaStatsTab(this,'genders')">Genders</button><button class="statsTab" data-tab="filehosts" onclick="csaStatsTab(this,'filehosts')">File Hosts</button><button class="statsTab" data-tab="streamsource" onclick="csaStatsTab(this,'streamsource')">Stream Sources</button><button class="statsTab" data-tab="chatlogging" onclick="csaStatsTab(this,'chatlogging')">Chat Logging</button></div>
        <div class="statsSubTabs" data-for="camsites">
          <button class="statsSubTab statsSubTabActive" data-win="24h" onclick="csaStatsWin(this,'24h')">24 Hour</button>
          <button class="statsSubTab" data-win="week" onclick="csaStatsWin(this,'week')">Week</button>
          <button class="statsSubTab" data-win="month" onclick="csaStatsWin(this,'month')">Month</button>
          <button class="statsSubTab" data-win="90day" onclick="csaStatsWin(this,'90day')">90 Day</button>
        </div>
        <div class="statsHeaderRow" style="display:flex;flex-wrap:wrap;align-items:flex-start;gap:20px;margin:0 0 8px 0;">
          <h3 id="statsHeading" style="color:#fff;font-size:14px;font-weight:600;margin:0;text-align:center;width:288px;max-width:288px;">Recordings by cam site</h3>
          <div id="statsLegendTitle" style="flex:1 1 200px;min-width:200px;"></div>
        </div>
        <div id="statsContent" style="min-height:340px;display:flex;align-items:center;justify-content:center;">
          <div class="statsSpinner" style="width:48px;height:48px;border:4px solid #333;border-top-color:#ff4d7a;border-radius:50%;animation:statsSpin 1s linear infinite;"></div>
        </div>
        <script>
        window.csaStatsWindow="24h";window.csaStatsTabName="camsites";window.csaStatsLastEpoch=0;window.csaStatsLastKey="";window.csaStatsOrigUrl=null;
        window.csaFmtPct=function(v,total){if(!total||!v)return "0.0";var p=v/total*100;var d=1;while(d<6&&parseFloat(p.toFixed(d))===0){d++;}return p.toFixed(d);};
        window.csaStatsTabSlug={camsites:"cam-sites",genders:"genders",filehosts:"file-hosts",streamsource:"stream-sources",chatlogging:"chat-logging"};window.csaStatsWinSlug={"24h":"24-hour","week":"week","month":"month","90day":"90-day"};window.csaStatsUrl=function(tab,win){if(tab==="chatlogging")return "/stats/chat-logging";if(tab==="camsites"&&win==="24h")return "/stats";return "/stats/"+(csaStatsTabSlug[tab]||"cam-sites")+"/"+(csaStatsWinSlug[win]||"24-hour");};
        window.csaStatsParsePath=function(p){if(p==="/stats"||p==="/stats/cam-sites")return {tab:"camsites",win:"24h"};if(p==="/stats/chat-logging")return {tab:"chatlogging",win:"24h"};var m=p.match(/^\/stats\/(cam-sites|genders|file-hosts|stream-sources)(?:\/(24-hour|week|month|90-day))?$/);if(!m)return null;var t={"cam-sites":"camsites","genders":"genders","file-hosts":"filehosts","stream-sources":"streamsource"}[m[1]];var w=m[2]?{"24-hour":"24h","week":"week","month":"month","90-day":"90day"}[m[2]]:"24h";return {tab:t,win:w};};
        window.csaCloseStats=function(){document.getElementById("modalStats").style.display="none";if(window.csaStatsOrigUrl){history.replaceState(null,"",window.csaStatsOrigUrl);window.csaStatsOrigUrl=null;}};
        window.csaOpenStats=function(){if(!window.csaStatsOrigUrl)window.csaStatsOrigUrl=location.pathname+location.search+location.hash;history.replaceState(null,"",csaStatsUrl(window.csaStatsTabName,window.csaStatsWindow));document.getElementById("modalStats").style.display="flex";if(!window.csaStatsRefresh){window.csaStatsRefresh=setInterval(function(){if(document.getElementById("modalStats").style.display!=="none"){csaStatsPoll();}},60000);}if(window.csaStatsLoaded){return;}window.csaStatsLoaded=true;var s=document.createElement("script");s.src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js";s.onload=function(){window.csaChartReady=true;csaStatsLoad();};document.head.appendChild(s);};
        window.csaStatsTab=function(btn,name){var tabs=document.querySelectorAll(".statsTab");for(var i=0;i<tabs.length;i++){tabs[i].classList.remove("statsTabActive");}btn.classList.add("statsTabActive");window.csaStatsTabName=name;var subs=document.querySelectorAll(".statsSubTab");for(var j=0;j<subs.length;j++){subs[j].style.display=(name==="chatlogging")?"none":"";}history.replaceState(null,"",csaStatsUrl(name,window.csaStatsWindow));csaStatsLoad();};
        window.csaOpenStatsTab=function(name){if(name!=="camsites"){window.csaStatsTabName=name;var btns=document.querySelectorAll(".statsTab");for(var i=0;i<btns.length;i++){btns[i].classList.toggle("statsTabActive",btns[i].dataset.tab===name);}}csaOpenStats();if(window.csaChartReady)csaStatsLoad();};
        window.csaStatsWin=function(btn,w){var subs=document.querySelectorAll(".statsSubTab");for(var i=0;i<subs.length;i++){subs[i].classList.remove("statsSubTabActive");}btn.classList.add("statsSubTabActive");window.csaStatsWindow=w;history.replaceState(null,"",csaStatsUrl(window.csaStatsTabName,w));csaStatsLoad();};
        window.csaStatsHeading=function(tab,win){var winLbl={"24h":"last 24h","week":"last week","month":"last 30 days","90day":"last 90 days"};if(tab==="camsites")return "Recordings by cam site";if(tab==="genders")return "Recordings by gender";if(tab==="filehosts")return "Recordings by file host";if(tab==="streamsource")return "Recordings by source ("+(winLbl[win]||"last 24h")+")";if(tab==="chatlogging")return "Chat logging by cam site";return "";};
        window.csaStatsLoad=function(){var name=window.csaStatsTabName;if(name!=="chatlogging"&&!window.csaChartReady)return;var __sh=document.getElementById("statsHeading");__sh.textContent=csaStatsHeading(window.csaStatsTabName,window.csaStatsWindow);__sh.style.display=(window.csaStatsTabName==="chatlogging")?"none":"";var __slt0=document.getElementById("statsLegendTitle");if(__slt0)__slt0.innerHTML="";var c=document.getElementById("statsContent");c.style.display="flex";c.style.alignItems="center";c.style.justifyContent="center";c.style.gap="";c.innerHTML='<div class="statsSpinner" style="width:48px;height:48px;border:4px solid #333;border-top-color:#ff4d7a;border-radius:50%;animation:statsSpin 1s linear infinite;"></div>';window.csaStatsLastEpoch=0;window.csaStatsLastKey=window.csaStatsTabName+":"+window.csaStatsWindow;if(name==="chatlogging"){fetch("/scripts/php/chatLoggingTab.php",{credentials:"same-origin"}).then(function(r){return r.json();}).then(function(d){window.csaStatsLastEpoch=d.updatedEpoch||0;csaRenderChatLogging(d);}).catch(function(e){document.getElementById("statsContent").innerHTML="<p>Failed to load chat logging.</p>";});return;}fetch("/scripts/php/statsPie24h.php?cat="+encodeURIComponent(window.csaStatsTabName)+"&w="+encodeURIComponent(window.csaStatsWindow),{credentials:"same-origin"}).then(function(r){return r.json();}).then(function(d){window.csaStatsLastEpoch=d.updatedEpoch||0;csaRenderStats(d);}).catch(function(e){document.getElementById("statsContent").innerHTML="<p>Failed to load stats.</p>";});};
        window.csaStatsPoll=function(){if(window.csaStatsTabName==="chatlogging")return;if(!window.csaChartReady)return;var key=window.csaStatsTabName+":"+window.csaStatsWindow;if(key!==window.csaStatsLastKey){return;}fetch("/scripts/php/statsPie24h.php?cat="+encodeURIComponent(window.csaStatsTabName)+"&w="+encodeURIComponent(window.csaStatsWindow),{credentials:"same-origin"}).then(function(r){return r.json();}).then(function(d){var ep=d.updatedEpoch||0;if(ep&&ep!==window.csaStatsLastEpoch){window.csaStatsLastEpoch=ep;csaRenderStats(d);}else{csaStatsUpdateAge(window.csaStatsLastEpoch);}}).catch(function(e){});};
        window.csaStatsUpdateAge=function(ep){var el=document.getElementById("statsUpdated");if(!el)return;var mins=ep?Math.max(0,Math.floor((Date.now()/1000-ep)/60)):0;el.textContent=ep?("Last Updated: "+(mins===0?"just now":(mins+" minute"+(mins===1?"":"s")+" ago"))):"Last Updated: \u2014";};
        window.csaRenderStats=function(d){var palette=["#ff4d7a","#39FF14","#FFA500","#00bfff","#ffb3c6","#9d4edd","#f4d35e","#06d6a0","#ef476f","#118ab2","#f72585","#7209b7","#4cc9f0","#fb8500","#8ecae6","#e63946","#2a9d8f","#e9c46a","#a8dadc","#cdb4db"];var camMap={"MFC":"MyFreeCams","SakuraLivejp":"SakuraLive","Amateur":"Amateur.tv","Showup":"Showup.tv"};var genMap={"female":"Female","male":"Male","couple":"Couple","transgender":"Transgender"};var items=d.items||[];var tab=window.csaStatsTabName;var labels=items.map(function(it){if(tab==="camsites")return camMap[it.name]||it.name;if(tab==="genders")return genMap[it.name.toLowerCase()]||it.name;return it.name;});var values=items.map(function(it){return it.count;});var urls=items.map(function(it){return it.url;});var colors=labels.map(function(_,i){return palette[i%palette.length];});var totalCount=values.reduce(function(a,b){return a+b;},0);var totLabel={camsites:"Cam Sites",genders:"Genders",filehosts:"File Hosts",streamsource:"Stream Sources"}[tab]||"";var c=document.getElementById("statsContent");c.style.display="block";c.innerHTML='<div class="statsPieWrap"><div class="statsPieCanvas"><div class="statsHoverLabel" id="statsHoverLabel">&nbsp;</div><div class="statsPieInner"><canvas id="statsPie"></canvas></div></div><div style="flex:1 1 200px;min-width:200px;"><div class="statsLegendCols"><div id="statsLegendA" class="statsLegend"></div><div id="statsLegendB" class="statsLegend"></div></div></div></div><div class="statsFoot"><span id="statsUpdated"></span><span class="statsFootDot"> </span><span class="statsFootEvery">Statistics refreshes every minute.</span></div>';csaStatsUpdateAge(d.updatedEpoch||0);var __slt=document.getElementById("statsLegendTitle");if(__slt)__slt.innerHTML=totLabel?`<h3 style="color:#fff;font-size:14px;font-weight:600;margin:0;text-align:center;">Total: ${items.length} ${totLabel}</h3>`:"";var lgA=document.getElementById("statsLegendA"),lgB=document.getElementById("statsLegendB"),oneCol=(tab==="streamsource"||tab==="filehosts"||tab==="genders"),half=oneCol?labels.length:Math.ceil(labels.length/2);var lgCols=document.querySelector(".statsLegendCols");if(oneCol){lgB.style.display="none";lgA.style.alignItems="flex-start";if(lgCols){lgCols.style.justifyContent="center";}}else{lgB.style.display="";lgA.style.alignItems="";if(lgCols){lgCols.style.justifyContent="";}}var rows=[];for(var i=0;i<labels.length;i++){var row=document.createElement("a");row.className="statsLegendRow";row.dataset.idx=i;row.href=urls[i]||"#";row.style.cursor=urls[i]?"pointer":"default";row.style.color="#fff";row.style.textDecoration="none";var pctLbl=csaFmtPct(values[i],totalCount);row.innerHTML='<span class="statsSwatch" style="background:'+colors[i]+'"></span><span>'+labels[i]+' '+pctLbl+'% ('+values[i].toLocaleString()+')</span>';(i<half?lgA:lgB).appendChild(row);rows.push(row);}if(window.csaChart){window.csaChart.destroy();}if(Chart.Tooltip&&Chart.Tooltip.positioners&&!Chart.Tooltip.positioners.cursor){Chart.Tooltip.positioners.cursor=function(items,eventPos){return{x:eventPos.x,y:eventPos.y-8};};}window.csaChart=new Chart(document.getElementById("statsPie"),{type:"pie",data:{labels:labels,datasets:[{data:values,backgroundColor:colors,borderColor:"#15151f",borderWidth:1,hoverOffset:8,hoverBorderColor:"#ffffff",hoverBorderWidth:2}]},options:{responsive:true,maintainAspectRatio:false,animation:false,layout:{padding:16},onHover:function(e,el){e.native.target.style.cursor=el.length?"pointer":"default";},onClick:function(e,el){if(el.length){var u=urls[el[0].index];if(u)window.location.href=u;}},plugins:{legend:{display:false},tooltip:{position:"cursor",displayColors:false,bodyFont:{size:14},titleFont:{size:14},callbacks:{title:function(){return "";},label:function(ctx){var total=ctx.dataset.data.reduce(function(a,b){return a+b;},0);return ctx.label+" "+csaFmtPct(ctx.parsed,total)+"% "+ctx.parsed.toLocaleString()+" recordings";}}}}}});rows.forEach(function(row){row.addEventListener("mouseenter",function(){var idx=parseInt(row.dataset.idx,10);var ch=window.csaChart;var ds=ch.data.datasets[0];var n=ds.data.length;var off=new Array(n).fill(0);off[idx]=12;ds.offset=off;var bc=new Array(n).fill("#15151f");bc[idx]="#ffffff";ds.borderColor=bc;var bw=new Array(n).fill(1);bw[idx]=2;ds.borderWidth=bw;var hl=document.getElementById("statsHoverLabel");if(hl)hl.textContent=labels[idx]+" "+csaFmtPct(values[idx],totalCount)+"% "+values[idx].toLocaleString()+" recordings";ch.update("none");});row.addEventListener("mouseleave",function(){var ch=window.csaChart;var ds=ch.data.datasets[0];ds.offset=0;ds.borderColor="#15151f";ds.borderWidth=1;var hl=document.getElementById("statsHoverLabel");if(hl)hl.innerHTML="&nbsp;";ch.update("none");});});};
        window.csaRenderChatLogging=function(d){var c=document.getElementById("statsContent");var __slt=document.getElementById("statsLegendTitle");if(__slt)__slt.innerHTML="";c.style.display="block";c.style.alignItems="";c.style.justifyContent="";var has={amateur:1,asiancammodels:1,bongacams:1,cam4:1,cams:1,camsoda:1,chaturbate:1,cherrytv:1,dreamcam:1,eplay:1,fanslylive:1,fc2live:1,flirt4free:1,imlive:1,livejasmin:1,mfc:1,myfreecams:1,olecams:1,sakuralive:1,sakuralivejp:1,sexchat:1,sexlikereal:1,showup:1,soulcams:1,streamate:1,stripchat:1,xcams:1,xlovecam:1,zbiornik:1};var logo=function(row,tipSuffix){var slug=row.slug;var tip=row.camSite+" chat logging "+tipSuffix;if(has[slug]){return '<a href="'+row.url+'" class="recordingmodelcamsite camsitelogosmall camsitelogo'+slug+'" title="'+tip+'" aria-label="'+tip+'"></a>';}return '<a href="'+row.url+'" title="'+tip+'" aria-label="'+tip+'" style="display:inline-block;width:91px;height:26px;line-height:26px;text-align:center;font-size:11px;color:#fff;text-decoration:none;border:1px solid #5B5B5B;background:#222;font-family:Arial,sans-serif;">'+row.name+'</a>';};var html="";html+='<h3 style="color:#fff;font-size:14px;font-weight:600;margin:0 0 10px 0;">Recordings include chat logging</h3>';html+='<div style="display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-start;margin-bottom:20px;padding-left:20px;">';(d.enabled||[]).forEach(function(r){html+=logo(r,"enabled");});html+='</div>';html+='<h3 style="color:#fff;font-size:14px;font-weight:600;margin:0 0 10px 0;">Recordings do not include chat logging</h3>';html+='<div style="display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-start;margin-bottom:20px;padding-left:20px;">';(d.disabled||[]).forEach(function(r){html+=logo(r,"not enabled");});html+='</div>';html+='<div class="statsFoot" style="margin-top:14px;"><span id="statsUpdated"></span></div>';c.innerHTML=html;csaStatsUpdateAge(d.updatedEpoch||0);};
        (function(){var pp=csaStatsParsePath(location.pathname);if(pp){setTimeout(function(){window.csaStatsOrigUrl="/";window.csaStatsTabName=pp.tab;window.csaStatsWindow=pp.win;var tabBtns=document.querySelectorAll(".statsTab");for(var i=0;i<tabBtns.length;i++){tabBtns[i].classList.toggle("statsTabActive",tabBtns[i].dataset.tab===pp.tab);}var subs=document.querySelectorAll(".statsSubTab");for(var j=0;j<subs.length;j++){subs[j].style.display=(pp.tab==="chatlogging")?"none":"";subs[j].classList.toggle("statsSubTabActive",subs[j].dataset.win===pp.win);}csaOpenStats();},100);}})();
        </script>
      </div>
    </div>
    <div id="modalCSD" style="display:none;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.8);justify-content:center;align-items:center;" onclick="if(event.target===this){csdClose();}">
      <div style="position:relative;background:#15151f;border:2px solid #333;border-radius:12px;padding:26px;max-width:720px;width:95%;height:620px;max-height:88vh;overflow-y:auto;color:#fff;line-height:1.55;display:flex;flex-direction:column;" onclick="event.stopPropagation()">
        <button onclick="csdClose()" title="Close" style="position:absolute;top:12px;right:14px;background:transparent;border:none;color:#fff;font-size:30px;cursor:pointer;line-height:1;">&times;</button>
        <button onclick="csdReset()" title="Reset" style="position:absolute;top:14px;right:56px;background:transparent;border:none;color:#fff;font-size:22px;font-weight:900;cursor:pointer;line-height:1;padding:0;">&#x21BA;</button>
        <h3 style="color:#fff;font-size:18px;font-weight:700;margin:0 0 10px 0;">White Label Detector</h3>
        <div id="csdDesc" onclick="document.getElementById(&quot;csdUrl&quot;).focus()" style="cursor:text;color:#fff;font-size:14px;min-height:80px;margin:0 0 14px 0;padding:10px 12px;background:#0d0d15;border:1px solid #2a2a3a;border-radius:6px;">Enter any URL to determine if it is just a white label of an existing platform.<br><br><strong>Note:</strong> URL paths will be removed from URLs.<br><br><strong>Example:</strong> jerkmate.com is a Streamate white label.</div>
        <form id="csdForm" onsubmit="csdRun();return false;" style="display:flex;gap:8px;margin-bottom:14px;">
          <input id="csdUrl" type="text" placeholder="domain or URL (e.g. xhamsterlive.com)" style="flex:1;background:#0d0d15;border:1px solid #333;border-radius:6px;padding:10px 12px;color:#fff;font-size:14px;" autocomplete="off">
          <button id="csdDetectBtn" type="submit" style="background:#ff4d7a;color:#000;border:none;border-radius:6px;padding:10px 18px;font-weight:700;cursor:pointer;font-size:14px;">Detect</button>
        </form>
        <label style="display:flex;align-items:center;gap:6px;font-size:14px;color:#fff;margin-bottom:6px;cursor:pointer;"><input id="csdRefresh" type="checkbox" onchange="csdToggleRescan(this)"> Force a new scan on an already discovered site</label>
        <div id="csdResult" style="min-height:140px;flex:1;"></div>
        <div id="csdTurnstileWrap" style="display:none;margin-top:10px;"></div>
        <div id="csdFooter" style="margin-top:auto;padding-top:14px;border-top:1px solid #2a2a3a;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;">
          <div id="csdStats" style="color:#fff;font-size:14px;"><strong style="color:#39FF14;">1,773</strong> white label sites discovered</div>
          <button onclick="csdOpenList()" class="csdViewAll">View all discovered white label cam sites</button>
        </div>
        <script defer src="/scripts/js/gauge.min.js"></script>
        <script>
        window.csdToken="c197c7dd003545cdc6e030d7ceac2d32";window.csdOrigUrl=null;window.csdListDirect=false;window.csdClose=function(){document.getElementById("modalCSD").style.display="none";if(window.csdOrigUrl){history.replaceState(null,"",window.csdOrigUrl);window.csdToken="c197c7dd003545cdc6e030d7ceac2d32";window.csdOrigUrl=null;}};
        window.csdOpen=function(){if(!window.csdOrigUrl)window.csdOrigUrl=location.href;history.replaceState(null,"","/white-label-detector");document.getElementById("modalCSD").style.display="flex";setTimeout(function(){var i=document.getElementById("csdUrl");if(i)i.focus();},50);csdLoadStats();};
        window.csdReset=function(){if(window.csdES){try{window.csdES.close();}catch(e){}}document.getElementById("csdUrl").value="";var cb=document.getElementById("csdRefresh");if(cb.checked){cb.checked=false;csdToggleRescan(cb);}document.getElementById("csdResult").innerHTML="";document.getElementById("csdUrl").focus();var _ifr=document.createElement("iframe");_ifr.style.display="none";_ifr.src="/api/stats?_token="+window.csdToken;_ifr.onload=function(){try{var d=JSON.parse(_ifr.contentDocument.body.textContent);if(d&&typeof d.total==="number"){var el=document.getElementById("csdStats");if(el)el.innerHTML='<strong style="color:#39FF14;">'+d.total.toLocaleString()+'</strong> white label sites discovered';}document.body.removeChild(_ifr);}catch(e){try{document.body.removeChild(_ifr);}catch(e2){}}};document.body.appendChild(_ifr);};
        window.csdNormalize=function(u){u=u.trim();u=u.replace(/^https?:\/\//i,"");u=u.replace(/^www\./i,"");u=u.split(/[\/?#]/)[0];return u.toLowerCase();};
        window.csdStatsInterval=null;window.csdLoadStats=function(){if(window.csdStatsInterval)return;window.csdStatsInterval=setInterval(function(){var m=document.getElementById("modalCSD");if(!m||m.style.display==="none"){clearInterval(window.csdStatsInterval);window.csdStatsInterval=null;return;}var ifr=document.createElement("iframe");ifr.style.display="none";ifr.src="/api/stats?t="+Date.now()+"&_token="+window.csdToken;ifr.onload=function(){try{var d=JSON.parse(ifr.contentDocument.body.textContent);var el=document.getElementById("csdStats");if(el&&d&&typeof d.total==="number"){el.innerHTML='<strong style="color:#39FF14;">'+d.total.toLocaleString()+'</strong> white label sites discovered';}document.body.removeChild(ifr);}catch(e){try{document.body.removeChild(ifr);}catch(e2){}}};document.body.appendChild(ifr);},15000);};
        window.csdES=null;window.csdTsLoaded=false;window.csdTsWidgetId=null;
        window.csdToggleRescan=function(cb){var btn=document.getElementById("csdDetectBtn");var wrap=document.getElementById("csdTurnstileWrap");if(cb.checked){btn.disabled=true;btn.style.opacity="0.4";btn.style.cursor="not-allowed";wrap.style.display="block";if(!window.csdTsLoaded){window.csdTsLoaded=true;var s=document.createElement("script");s.src="https://challenges.cloudflare.com/turnstile/v0/api.js?onload=csdTsReady";s.async=true;document.head.appendChild(s);}else{csdTsReady();}}else{btn.disabled=false;btn.style.opacity="1";btn.style.cursor="pointer";wrap.style.display="none";wrap.innerHTML="";if(window.csdTsWidgetId!==null){try{turnstile.remove(window.csdTsWidgetId);}catch(e){}window.csdTsWidgetId=null;}}};
        window.csdTsReady=function(){var wrap=document.getElementById("csdTurnstileWrap");wrap.innerHTML="";window.csdTsWidgetId=turnstile.render(wrap,{sitekey:"0x4AAAAAACbXyQ_0N2C4_7hS",callback:function(){var btn=document.getElementById("csdDetectBtn");btn.disabled=false;btn.style.opacity="1";btn.style.cursor="pointer";document.getElementById("csdTurnstileWrap").style.display="none";}});};
        window.csdRunning=false;window.csdRun=function(){if(window.csdRunning)return;var rawInput=document.getElementById("csdUrl").value;var u=csdNormalize(rawInput);if(!u)return;document.getElementById("csdUrl").value=u;var force=document.getElementById("csdRefresh").checked?"&refresh=1":"";var r=document.getElementById("csdResult");if(window.csdES){try{window.csdES.close();}catch(e){}}window.csdDomain=u;window.csdRunning=true;var _btn=document.getElementById("csdDetectBtn");_btn.disabled=true;_btn.style.opacity="0.4";_btn.style.cursor="not-allowed";r.innerHTML='<div id="csdStatus" style="background:#0d0d15;border:1px solid #333;border-radius:8px;padding:16px;text-align:center;"><div class="csdSpinner" style="margin-bottom:14px;"></div><div style="color:#fff;font-size:15px;">Scanning <strong>'+u+'</strong></div></div>';var es=new EventSource("/api/scan?url="+encodeURIComponent(u)+"&stream=1"+force+"&_token="+window.csdToken);window.csdES=es;es.addEventListener("status",function(ev){try{var d=JSON.parse(ev.data);var el=document.getElementById("csdStatus");if(!el)return;var dom=window.csdDomain;var txt="";if(d.msg==="routing"){txt="Routing connection to <strong>"+dom+"</strong>";}else if(d.msg==="established"){txt="Route to <strong>"+dom+"</strong> established, scanning <strong>"+dom+"</strong>";}else if(d.msg==="retry"){txt="Route could not be established to <strong>"+dom+"</strong>, retrying attempt "+d.attempt+" of "+d.total;}el.innerHTML='<div class="csdSpinner" style="margin-bottom:14px;"></div><div style="color:#fff;font-size:15px;">'+txt+'</div>';}catch(e){}});es.addEventListener("result",function(ev){es.close();try{var _rd=JSON.parse(ev.data);csdRender(_rd);window.csdRunning=false;var _btn2=document.getElementById("csdDetectBtn");_btn2.disabled=false;_btn2.style.opacity="1";_btn2.style.cursor="pointer";if(_rd.isWhiteLabel&&!_rd.cached){var _el=document.getElementById("csdStats");if(_el){var _m=_el.textContent.match(/([\d,]+)/);if(_m){var _c=parseInt(_m[1].replace(/,/g,""),10)+1;_el.innerHTML='<strong style="color:#39FF14;">'+_c.toLocaleString()+'</strong> white label sites discovered';}}}}catch(e){r.innerHTML='<p style="color:#ff4d7a;">Bad response</p>';}});es.addEventListener("error",function(ev){es.close();if(ev.data){try{var d=JSON.parse(ev.data);csdRender(d);return;}catch(e){}}r.innerHTML='<div style="background:#2a1015;border:1px solid #ff4d7a;border-radius:8px;padding:14px;text-align:center;"><strong style="color:#ff4d7a;">Connection lost</strong></div>';window.csdRunning=false;var _btn3=document.getElementById("csdDetectBtn");_btn3.disabled=false;_btn3.style.opacity="1";_btn3.style.cursor="pointer";});};
        window.csdRender=function(d){var r=document.getElementById("csdResult");if(d.error){var msg=(d.error.indexOf("vpn preflight")===0||d.error.indexOf("all servers")===0)?"Scan failed due to routing problems, please try again later":d.error;r.innerHTML='<div style="background:#2a1015;border:1px solid #ff4d7a;border-radius:8px;padding:14px;"><strong style="color:#ff4d7a;">Error:</strong> '+msg+'</div>';return;}var conf=d.confidence||0;var barCol=conf>=70?"#2d8a4e":conf>=40?"#f4d35e":"#e63946";var bar='<div class="csdBarWrap" style="margin:10px 0;"><div class="csdBar" style="flex:1;height:20px;"><div class="csdBarFill" style="width:'+conf+'%;background-color:'+barCol+'"><span class="csdBarLabel" style="font-size:12px;color:'+((conf>=40&&conf<70)?"#000":"#fff")+';">'+conf+'%</span></div></div></div>';var sigs=(d.signals||[]).map(function(s){return '<span style="display:inline-block;background:#1f1f2e;border:1px solid #444;border-radius:4px;padding:3px 8px;margin:2px 4px 2px 0;font-size:13px;color:#fff;">'+s+'</span>';}).join("");var cachedNote='';var wlBadge=d.redirectTo?'<span style="display:inline-block;background:#FFA500;color:#000;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:700;margin-left:8px;">REDIRECT \u2192 '+d.redirectTo+'</span>':(d.isWhiteLabel?'<span style="display:inline-block;background:#fff;color:#000;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:700;margin-left:8px;">WHITE LABEL</span>':(d.confidence>=80&&d.platform!=="Cam site not detected"?'<span style="display:inline-block;background:#39FF14;color:#000;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:700;margin-left:8px;">VERIFIED CAM SITE</span>':''));r.innerHTML='<div style="background:#0d0d15;border:1px solid #333;border-radius:8px;padding:14px;"><div style="display:flex;justify-content:space-between;align-items:baseline;"><div><div style="color:#fff;font-size:14px;">'+d.domain+wlBadge+'</div><div style="color:#fff;font-size:22px;font-weight:700;">'+(d.confidence>0?"Platform: ":"")+d.platform+'</div>'+(d.secondary?'<div style="color:#aaa;font-size:13px;">with '+d.secondary+' content</div>':'')+'</div>'+cachedNote+'</div>'+bar+''+''+(sigs?'<div style="margin-top:10px;"><div style="color:#fff;font-size:14px;margin-bottom:4px;">Signals:</div>'+sigs+'</div>':'')+'</div>';};
        window.csdOpenList=function(){document.getElementById("modalCSD").style.display="none";history.replaceState(null,"","/white-label-detector/white-labels");var m=document.getElementById("modalCSDList");m.style.display="flex";var body=document.getElementById("csdListBody");body.innerHTML='<div style="text-align:center;padding:40px 0;"><div class="csdSpinner"></div><p style="margin-top:14px;color:#fff;">Loading discovered white labels…</p></div>';fetch("/api/discoveries?_token="+window.csdToken,{credentials:"same-origin"}).then(function(r){return r.json();}).then(function(d){csdRenderList(d);}).catch(function(e){body.innerHTML='<p style="color:#ff4d7a;">Failed to load: '+e.message+'</p>';});};
        window.csdCloseList=function(){document.getElementById("modalCSDList").style.display="none";if(window.csdListDirect){if(window.csdOrigUrl){history.replaceState(null,"",window.csdOrigUrl);window.csdToken="c197c7dd003545cdc6e030d7ceac2d32";window.csdOrigUrl=null;window.csdListDirect=false;}window.csdListDirect=false;}else{document.getElementById("modalCSD").style.display="flex";history.replaceState(null,"","/white-label-detector");setTimeout(function(){document.getElementById("csdUrl").focus();},50);}};
        window.csdFmtDate=function(ts){if(!ts)return "—";var d=new Date(ts*1000);return d.toISOString().slice(0,10)+" "+d.toISOString().slice(11,16);};
        window.csdRenderList=function(d){var body=document.getElementById("csdListBody");if(!d||!d.groups){body.innerHTML='<p class="csdErr">No data</p>';return;}var html='<div class="csdSummary"><strong class="csdSummaryNum">'+d.total+'</strong> white label '+(d.total===1?'site':'sites')+' across <strong class="csdSummaryNum">'+d.platformCount+'</strong> parent '+(d.platformCount===1?'platform':'platforms')+'</div>';var _hs={"amateur":1,"asiancammodels":1,"bongacams":1,"cam4":1,"cams":1,"camsoda":1,"chaturbate":1,"cherrytv":1,"dreamcam":1,"eplay":1,"fc2live":1,"flirt4free":1,"imlive":1,"livejasmin":1,"manyvids":1,"mfc":1,"olecams":1,"sakuralivejp":1,"showup":1,"soulcams":1,"streamate":1,"stripchat":1,"xcams":1,"xlovecam":1,"zbiornik":1,"sexchat":1,"sexlikereal":1};if(d.noWhiteLabels&&d.noWhiteLabels.length>0){var slugMap={"MyFreeCams":"mfc","Flirt4Free":"flirt4free","SakuraLive":"sakuralivejp","Cam4":"cam4","Showup":"showup","AsianCamModels":"asiancammodels","Olecams":"olecams","XLoveCam":"xlovecam","DreamCam":"dreamcam","ePlay":"eplay","FC2 Live":"fc2live","FC2Live":"fc2live","Zbiornik":"zbiornik","Chaturbate":"chaturbate","Stripchat":"stripchat","CamSoda":"camsoda","BongaCams":"bongacams","Streamate":"streamate","LiveJasmin":"livejasmin","ImLive":"imlive","Xcams":"xcams"};html+='<div class="csdSection"><h4 class="csdSectionHeadMuted">Cam sites without white labels <span class="csdCount">('+d.noWhiteLabels.length+')</span></h4><div class="csdNoWlGrid">';d.noWhiteLabels.forEach(function(p){var slug=slugMap[p]||p.toLowerCase();if(_hs[slug]){html+='<a href="/camsite/'+slug+'/page/1" class="camsitelogo'+slug+' camsitelogosmall" title="'+p+'" aria-label="'+p+'"></a>';}else{html+='<a href="/camsite/'+slug+'/page/1" title="'+p+'" aria-label="'+p+'" style="display:inline-block;width:91px;height:26px;"></a>';}});html+='</div></div>';}var fqdnMap={"Chaturbate":"chaturbate.com","Stripchat":"stripchat.com","MyFreeCams":"myfreecams.com","CamSoda":"camsoda.com","Cam4":"cam4.com","BongaCams":"bongacams.com","Streamate":"streamate.com","LiveJasmin":"livejasmin.com","Flirt4Free":"flirt4free.com","ImLive":"imlive.com","SakuraLive":"sakuralive.com","Showup":"showup.tv","XLoveCam":"xlovecam.com","DreamCam":"dreamcam.com","ePlay":"eplay.com","FC2 Live":"live.fc2.com","FC2Live":"live.fc2.com","AsianCamModels":"asiancammodels.com","Zbiornik":"zbiornik.com","Cams":"cams.com","Xcams":"xcams.com"};var plats=Object.keys(d.groups).sort(function(a,b){return d.groups[b].length-d.groups[a].length;});var bc=function(c){return c>=70?"#2d8a4e":c>=40?"#f4d35e":"#e63946";};var lc=function(c){return c>=40&&c<70?"#000":"#fff";};var _idx=0;plats.forEach(function(p){var rows=d.groups[p];var id="csdAcc"+_idx++;var slug=slugMap[p]||p.toLowerCase();html+='<div class="csdSection"><div class="csdAccordion" data-target="'+ id+'">'+(_hs[slug]?'<span class="camsitelogo'+slug+' camsitelogosmall" style="margin-right:10px;flex-shrink:0;"></span>':'<span style="display:inline-block;width:24px;height:24px;margin-right:10px;flex-shrink:0;"></span>')+'<h4 class="csdSectionHead" style="margin:0;flex:1;">'+(fqdnMap[p]||p)+' \u2013 <span class="csdCount">'+rows.length.toLocaleString()+' White Label'+(rows.length===1?'':'s')+'</span></h4><span class="csdArrow">&#9654;</span></div><div id="'+id+'" class="csdAccBody"><table class="csdTable"><colgroup><col style="width:45%"><col style="width:25%"><col style="width:30%"></colgroup><thead><tr><th>Domain</th><th>Confidence</th><th>Last Verified</th></tr></thead><tbody>';rows.forEach(function(row){html+='<tr><td class="csdMono">'+row.domain+'</td><td><div class="csdBarWrap" title="'+row.confidence+'% confidence"><div class="csdBar"><div class="csdBarFill" style="width:'+row.confidence+'%;background-color:'+bc(row.confidence)+'"><span class="csdBarLabel" style="color:'+lc(row.confidence)+';">'+row.confidence+'%</span></div></div></div></td><td class="csdMonoSm">'+csdFmtDate(row.lastScanned)+'</td></tr>';});html+='</tbody></table></div></div>';});body.innerHTML=html;var _ms=document.getElementById("csdStats");if(_ms&&d.total){_ms.innerHTML='<strong style="color:#39FF14;">'+d.total.toLocaleString()+'</strong> white label sites discovered';}body.querySelectorAll(".csdAccordion").forEach(function(el){el.addEventListener("click",function(){var t=document.getElementById(el.getAttribute("data-target"));var a=el.querySelector(".csdArrow");if(t){t.classList.toggle("open");}if(a){a.classList.toggle("open");}});});};
        (function(){var p=location.pathname;if(p==="/white-label-detector/white-labels"){setTimeout(function(){window.csdOrigUrl="/";window.csdListDirect=true;csdOpenList();},100);}else if(p==="/white-label-detector"){setTimeout(function(){window.csdOrigUrl="/";csdOpen();},100);}})();
        </script>
      </div>
    </div>
    <div id="modalSiteStatus" style="display:none;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.85);justify-content:center;align-items:center;" onclick="if(event.target===this){csaSiteStatusClose();}">
      <div style="position:relative;background:#0f1115;border:2px solid #333;border-radius:12px;width:95vw;max-width:1100px;height:90vh;overflow:hidden;" onclick="event.stopPropagation()">
        <button onclick="csaSiteStatusClose()" title="Close" style="position:absolute;top:8px;right:12px;background:rgba(0,0,0,0.5);border:none;color:#fff;font-size:30px;cursor:pointer;line-height:1;padding:2px 10px;border-radius:6px;z-index:2;">&times;</button>
        <iframe id="siteStatusFrame" src="" style="border:none;width:100%;height:100%;background:#0f1115;display:block;"></iframe>
      </div>
    </div>
    <script>
      window.csaSiteStatusOpen=function(p){if(!window.csaSiteStatusOrigUrl)window.csaSiteStatusOrigUrl=location.pathname+location.search+location.hash;var path=(p&&typeof p==="string"&&p.indexOf("/site-status")===0)?p:"/site-status";history.replaceState(null,"",path);var f=document.getElementById("siteStatusFrame");if(f)f.src="https://status.camshowarchives.com"+path;document.getElementById("modalSiteStatus").style.display="flex";};
      window.csaSiteStatusClose=function(){document.getElementById("modalSiteStatus").style.display="none";if(window.csaSiteStatusOrigUrl){history.replaceState(null,"",window.csaSiteStatusOrigUrl);window.csaSiteStatusOrigUrl=null;}var f=document.getElementById("siteStatusFrame");if(f)f.src="";};
      window.addEventListener("message",function(ev){try{if(ev.origin!=="https://status.camshowarchives.com")return;var d=ev&&ev.data;if(d&&d.csaStatus){var sm=document.getElementById("modalSiteStatus");if(sm&&sm.style.display&&sm.style.display!=="none"){history.replaceState(null,"",(d.path||"/site-status"));}}}catch(e){}});
      (function(){var p=location.pathname;if(p==="/site-status"||p==="/site-status/last-day"||p==="/site-status/last-week"){setTimeout(function(){window.csaSiteStatusOrigUrl="/";csaSiteStatusOpen(p);},100);}})();
    </script>
    <div id="modalCSDList" style="display:none;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.85);justify-content:center;align-items:center;" onclick="if(event.target===this){csdCloseList();}">
      <div style="position:relative;background:#15151f;border:2px solid #333;border-radius:12px;padding:26px;max-width:1100px;width:95%;height:80vh;overflow-y:auto;color:#fff;line-height:1.55;" onclick="event.stopPropagation()">
        <button onclick="csdCloseList()" title="Back" style="position:absolute;top:12px;right:14px;background:transparent;border:none;color:#fff;font-size:30px;cursor:pointer;line-height:1;">&times;</button>
        <h3 style="color:#fff;font-size:20px;font-weight:700;margin:0 0 14px 0;">Discovered White Label Cam Sites</h3>
        <div id="csdListBody"></div>
      </div>
    </div>
    <div id="adminPrefsModal" style="display:none;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.8);justify-content:center;align-items:center;" onclick="if(event.target===this){idxTryClose();}">
      <div id="idxPrefsBox" style="background:#15151f;border:2px solid #333;border-radius:12px;padding:24px;max-width:600px;width:90vw;height:880px;max-height:90vh;overflow-y:auto;" onclick="event.stopPropagation()">
        <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;">
          <div style="display:flex;align-items:baseline;gap:8px;">
            <span style="color:#fff;font-size:22px;font-weight:700;">Display Options</span>
          </div>
          <button onclick="idxTryClose();" style="background:transparent;border:none;color:#fff;font-size:32px;cursor:pointer;line-height:1;">&times;</button>
        </div>
        <div class="statsTabs" style="margin-bottom:16px;">
          <button class="statsTab statsTabActive" data-tab="filter-recordings" onclick="dispSwitchTab('filter-recordings')">Filter Recordings</button>
          <button class="statsTab" data-tab="site-layout" onclick="dispSwitchTab('site-layout')">Site Layout</button>
          <button class="statsTab" data-tab="show-types" onclick="dispSwitchTab('show-types')">Show Types</button>
        </div>
        <div class="dispTabContent" data-tab="filter-recordings">
        <div style="display:flex;align-items:baseline;gap:8px;margin-bottom:12px;"><span style="color:#aaa;font-size:17px;">Filter recordings from being displayed</span><button id="idxDefaultsBtn" onclick="document.querySelectorAll('.idx-cb').forEach(function(cb){cb.checked=true;});idxUpdateDefaults();idxSaveLS();" style="display:none;background:transparent;color:#ff4d7a;border:none;font-size:15px;cursor:pointer;">(defaults)</button></div>
        <div id="idxPrefsMsg" onclick="idxDefaultsClick()" style="display:none;cursor:pointer;color:#fff;background:#7a1030;border:1px solid #ff4d7a;padding:8px 12px;border-radius:6px;margin-bottom:12px;text-align:center;font-weight:600;"></div>
        <script defer src="/scripts/js/displayPreferences.js"></script>
        <div style="margin-bottom:16px;">
          <div style="display:flex;align-items:center;gap:8px;margin-bottom:8px;"><span style="color:#fff;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;">Show Gender</span><a href="#" id="idxToggleGender" onclick="idxToggleGroup('gender');return false;" style="color:#ff4d7a;font-size:15px;text-decoration:none;">(uncheck all)</a></div>
          <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:8px;">
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="gender" value="Female" checked> <span class="gendericon gendericonfemale"></span> Female</label>
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="gender" value="Male" checked> <span class="gendericon gendericonmale"></span> Male</label>
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="gender" value="Couple" checked> <span class="gendericon gendericoncouple"></span> Couple</label>
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="gender" value="Transgender" checked> <span class="gendericon gendericontransgender"></span> Trans</label>
          </div>
        </div>
        <div style="margin-bottom:16px;">
          <div style="display:flex;align-items:center;gap:8px;margin-bottom:8px;"><span style="color:#fff;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;">Show Cam Site</span><a href="#" id="idxToggleCamsite" onclick="idxToggleGroup('camsite');return false;" style="color:#ff4d7a;font-size:15px;text-decoration:none;">(uncheck all)</a></div>
          <div style="padding-left:32px;display:grid;grid-template-columns:repeat(4,max-content);gap:8px 16px;">
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Amateur" checked> <span class="camsitelogosmall camsitelogoamateur" style="opacity:1;outline:none;" title="Amateur.tv" aria-label="Amateur.tv"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="AsianCamModels" checked> <span class="camsitelogosmall camsitelogoasiancammodels" style="opacity:1;outline:none;" title="AsianCamModels" aria-label="AsianCamModels"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="BongaCams" checked> <span class="camsitelogosmall camsitelogobongacams" style="opacity:1;outline:none;" title="BongaCams" aria-label="BongaCams"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Cam4" checked> <span class="camsitelogosmall camsitelogocam4" style="opacity:1;outline:none;" title="Cam4" aria-label="Cam4"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Cams" checked> <span class="camsitelogosmall camsitelogocams" style="opacity:1;outline:none;" title="Cams" aria-label="Cams"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="CamSoda" checked> <span class="camsitelogosmall camsitelogocamsoda" style="opacity:1;outline:none;" title="CamSoda" aria-label="CamSoda"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Chaturbate" checked> <span class="camsitelogosmall camsitelogochaturbate" style="opacity:1;outline:none;" title="Chaturbate" aria-label="Chaturbate"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="CherryTV" checked> <span class="camsitelogosmall camsitelogocherrytv" style="opacity:1;outline:none;" title="Cherry.TV" aria-label="Cherry.TV"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Dreamcam" checked> <span class="camsitelogosmall camsitelogodreamcam" style="opacity:1;outline:none;" title="Dreamcam" aria-label="Dreamcam"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="ePlay" checked> <span class="camsitelogosmall camsitelogoeplay" style="opacity:1;outline:none;" title="ePlay" aria-label="ePlay"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="FC2Live" checked> <span class="camsitelogosmall camsitelogofc2live" style="opacity:1;outline:none;" title="FC2Live" aria-label="FC2Live"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Flirt4Free" checked> <span class="camsitelogosmall camsitelogoflirt4free" style="opacity:1;outline:none;" title="Flirt4Free" aria-label="Flirt4Free"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="ImLive" checked> <span class="camsitelogosmall camsitelogoimlive" style="opacity:1;outline:none;" title="ImLive" aria-label="ImLive"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="LiveJasmin" checked> <span class="camsitelogosmall camsitelogolivejasmin" style="opacity:1;outline:none;" title="LiveJasmin" aria-label="LiveJasmin"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="MFC" checked> <span class="camsitelogosmall camsitelogomfc" style="opacity:1;outline:none;" title="MyFreeCams" aria-label="MyFreeCams"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Olecams" checked> <span class="camsitelogosmall camsitelogoolecams" style="opacity:1;outline:none;" title="Olecams" aria-label="Olecams"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="SakuraLivejp" checked> <span class="camsitelogosmall camsitelogosakuralivejp" style="opacity:1;outline:none;" title="SakuraLive" aria-label="SakuraLive"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="SexChat" checked> <span class="camsitelogosmall camsitelogosexchat" style="opacity:1;outline:none;" title="SexChat" aria-label="SexChat"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="SexLikeReal" checked> <span class="camsitelogosmall camsitelogosexlikereal" style="opacity:1;outline:none;" title="SexLikeReal" aria-label="SexLikeReal"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Showup" checked> <span class="camsitelogosmall camsitelogoshowup" style="opacity:1;outline:none;" title="Showup" aria-label="Showup"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="SoulCams" checked> <span class="camsitelogosmall camsitelogosoulcams" style="opacity:1;outline:none;" title="SoulCams" aria-label="SoulCams"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Streamate" checked> <span class="camsitelogosmall camsitelogostreamate" style="opacity:1;outline:none;" title="Streamate" aria-label="Streamate"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Stripchat" checked> <span class="camsitelogosmall camsitelogostripchat" style="opacity:1;outline:none;" title="Stripchat" aria-label="Stripchat"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Xcams" checked> <span class="camsitelogosmall camsitelogoxcams" style="opacity:1;outline:none;" title="Xcams" aria-label="Xcams"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="XloveCam" checked> <span class="camsitelogosmall camsitelogoxlovecam" style="opacity:1;outline:none;" title="XloveCam" aria-label="XloveCam"></span></label>
            <label style="color:#ddd;cursor:pointer;display:inline-flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="camsite" value="Zbiornik" checked> <span class="camsitelogosmall camsitelogozbiornik" style="opacity:1;outline:none;" title="Zbiornik" aria-label="Zbiornik"></span></label>
          </div>
        </div>
        <div style="margin-bottom:16px;">
          <div style="display:flex;align-items:center;gap:8px;margin-bottom:8px;"><span style="color:#fff;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;">Show File Host</span><a href="#" id="idxToggleHost" onclick="idxToggleGroup('host');return false;" style="color:#ff4d7a;font-size:15px;text-decoration:none;">(uncheck all)</a></div>
          <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:8px;">
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="host" value="FileBoom" checked> <span class="filehosticonfileboom"></span> FileBoom</label>
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="host" value="TezFiles" checked> <span class="filehosticontezfiles"></span> TezFiles</label>
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="host" value="Upstore" checked> <span class="filehosticonupstore"></span> Upstore</label>
          </div>
        </div>
        <div style="margin-bottom:16px;">
          <div style="display:flex;align-items:center;gap:8px;margin-bottom:8px;"><span style="color:#fff;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;">Show Stream Quality</span><a href="#" id="idxToggleQuality" onclick="idxToggleGroup('quality');return false;" style="color:#ff4d7a;font-size:15px;text-decoration:none;">(uncheck all)</a></div>
          <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:18px;">
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="quality" value="SD" checked> <span class="resolutionbadge resolutionsd" style="padding:0 10px;"></span></label>
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="quality" value="HD" checked> <span class="resolutionbadge resolutionhd" style="padding:0 10px;"></span></label>
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="quality" value="FHD" checked> <span class="resolutionbadge resolutionfhd" style="padding:0 6px;"></span></label>
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="quality" value="QHD" checked> <span class="resolutionbadge resolutionqhd" style="padding:0 6px;"></span></label>
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="quality" value="UHD" checked> <span class="resolutionbadge resolutionuhd" style="padding:0 6px;"></span></label>
            <label style="color:#ddd;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:4px;"><input type="checkbox" class="idx-cb" data-group="quality" value="VR" checked> <span class="resolutionbadge resolutionvr" style="padding:0 10px;"></span></label>
          </div>
        </div>
        <style>#idxPrefsBox .vtOpt{position:relative;background:transparent;border:1px solid transparent;border-radius:6px;padding:4px 12px;cursor:pointer;font-size:15px;color:#ddd;}#idxPrefsBox .vtOpt::after{content:attr(data-label);font-weight:bold;height:0;display:block;overflow:hidden;visibility:hidden;}#idxPrefsBox .vtOpt.vtOptSel{color:#ff4d7a;font-weight:bold;border-color:#ff4d7a;}</style>
        <div style="display:flex;align-items:center;gap:8px;padding:8px 0;flex-wrap:wrap;">
          <span style="color:#fff;font-size:16px;">Show VTubers:</span>
          <span style="color:#aaa;font-size:14px;">(AI/Animated Streams)</span>
          <div style="display:inline-flex;gap:8px;">
            <button class="vtOpt vtOptSel" id="vtOptShow" data-label="Display" onclick="dispSetVTubers('show')">Display</button>
            <button class="vtOpt" id="vtOptHide" data-label="Hidden" onclick="dispSetVTubers('hidden')">Hidden</button>
          </div>
        </div>
        </div>
        <div class="dispTabContent" data-tab="site-layout" style="display:none;">
          <div class="siteLayoutWideOnly">
            <div style="display:flex;align-items:baseline;gap:8px;padding:8px 0;">
              <label style="color:#fff;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:8px;"><input type="checkbox" id="dispAlwaysSidebar" onchange="dispToggleAlwaysSidebar(this)"> Always display Sidebar Menu</label>
              <button id="dispAlwaysSidebarDefaults" onclick="dispResetAlwaysSidebar()" style="display:none;background:transparent;color:#ff4d7a;border:none;font-size:15px;cursor:pointer;">(defaults)</button>
            </div>
            <div style="color:#aaa;font-size:15px;padding-left:28px;">This option works best for 4k monitors</div>
            <div style="display:flex;align-items:baseline;gap:8px;padding:8px 0;">
              <label style="color:#fff;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:8px;"><input type="checkbox" id="dispHideBurger" onchange="dispToggleHideBurger(this)"> Hide hamburger menu button</label>
              <button id="dispHideBurgerDefaults" onclick="dispResetHideBurger()" style="display:none;background:transparent;color:#ff4d7a;border:none;font-size:15px;cursor:pointer;">(defaults)</button>
            </div>
          </div>
          <div style="display:flex;align-items:baseline;gap:8px;padding:8px 0;">
            <label style="color:#fff;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:8px;"><input type="checkbox" id="dispAutoMute" onchange="dispToggleAutoMute(this)"> Auto-mute recordings when played</label>
            <button id="dispAutoMuteDefaults" onclick="dispResetAutoMute()" style="display:none;background:transparent;color:#ff4d7a;border:none;font-size:15px;cursor:pointer;">(defaults)</button>
          </div>
          <div style="display:flex;align-items:center;gap:8px;padding:8px 0;flex-wrap:wrap;">
            <span style="color:#fff;font-size:16px;">Recording card size:</span>
            <div style="display:inline-flex;gap:8px;flex-wrap:wrap;">
              <button class="cardSizeBtn vtOpt" data-size="320" data-label="Small" onclick="dispSetCardSize('320')">Small</button>
              <button class="cardSizeBtn vtOpt vtOptSel" data-size="400" data-label="Default" onclick="dispSetCardSize('400')">Default</button>
              <button class="cardSizeBtn vtOpt" data-size="480" data-label="Large" onclick="dispSetCardSize('480')">Large</button>
              <button class="cardSizeBtn vtOpt" data-size="560" data-label="X-Large" onclick="dispSetCardSize('560')">X-Large</button>
            </div>
            <button id="dispCardSizeDefaults" onclick="dispResetCardSize()" style="display:none;background:transparent;color:#ff4d7a;border:none;font-size:15px;cursor:pointer;">(defaults)</button>
          </div>
          <div style="display:flex;align-items:center;gap:8px;padding:8px 0;flex-wrap:wrap;">
            <span style="color:#fff;font-size:16px;">Category index page:</span>
            <div style="display:inline-flex;gap:8px;">
              <button class="catOrderBtn vtOpt vtOptSel" data-order="popular" data-label="Most Popular" onclick="dispSetCategoryOrder('popular')">Most Popular</button>
              <button class="catOrderBtn vtOpt" data-order="alpha" data-label="Alphabetical" onclick="dispSetCategoryOrder('alpha')">Alphabetical</button>
            </div>
          </div>
          <div style="display:flex;align-items:baseline;gap:8px;padding:8px 0;">
            <label style="color:#fff;font-size:16px;cursor:pointer;display:flex;align-items:center;gap:8px;flex-wrap:wrap;"><input type="checkbox" id="dispDisableArrows" onchange="dispToggleDisableArrows(this)"> Disable <span style="display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;font-size:11px;border-radius:5px;outline:1px solid #888;color:#ccc;transform:scaleX(-1);line-height:1;">&#10132;</span><span style="display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;font-size:11px;border-radius:5px;outline:1px solid #888;color:#ccc;line-height:1;margin-left:-4px;">&#10132;</span> navigation arrows</label>
            <button id="dispDisableArrowsDefaults" onclick="dispResetDisableArrows()" style="display:none;background:transparent;color:#ff4d7a;border:none;font-size:15px;cursor:pointer;">(defaults)</button>
          </div>
        </div>
        <div class="dispTabContent" data-tab="show-types" style="display:none;">
          <div style="margin-bottom:14px;padding-top:10px;border-top:1px solid #2a2a3a;">
            <div style="margin-bottom:8px;"><span class="camsitelogosmall camsitelogoamateur" style="opacity:1;outline:none;" title="Amateur" aria-label="Amateur"></span></div>
            <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:6px 14px;">
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="amateur" value="1" checked> Public Chat</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="amateur" value="6" checked> Goal Show</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="amateur" value="7" checked> Multi Goal Show</label>
            </div>
          </div>
          <div style="margin-bottom:14px;padding-top:10px;border-top:1px solid #2a2a3a;">
            <div style="margin-bottom:8px;"><span class="camsitelogosmall camsitelogocams" style="opacity:1;outline:none;" title="Cams" aria-label="Cams"></span></div>
            <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:6px 14px;">
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="cams" value="1" checked> Free Chat</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="cams" value="2" checked> Nude Chat</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="cams" value="3" checked> Private Show</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="cams" value="6" checked> Goal Show</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="cams" value="10" checked> Party Chat</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="cams" value="11" checked> Exclusive Show</label>
            </div>
          </div>
          <div style="margin-bottom:14px;padding-top:10px;border-top:1px solid #2a2a3a;">
            <div style="margin-bottom:8px;"><span class="camsitelogosmall camsitelogocamsoda" style="opacity:1;outline:none;" title="CamSoda" aria-label="CamSoda"></span></div>
            <div style="padding-left:32px;">
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;margin-bottom:8px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="camsoda" value="1" checked> Public Show</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" id="showTypeVoyeurParent" checked onchange="var self=this;document.querySelectorAll('.idx-cb[data-camsite=\'camsoda\'][data-voyeur=\'1\']').forEach(function(cb){cb.checked=self.checked;});if(typeof idxClearMsgIfValid==='function')idxClearMsgIfValid();if(typeof idxUpdateDefaults==='function')idxUpdateDefaults();"> Voyeur Show</label>
              <div id="showTypeVoyeurSub" style="margin-top:8px;margin-left:18px;padding:6px 0 4px 12px;border-left:2px solid #333;">
              <div style="display:flex;flex-wrap:wrap;gap:6px 14px;">
                <label style="color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="camsoda" data-voyeur="1" value="20" checked> Bedroom</label>
                <label style="color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="camsoda" data-voyeur="1" value="21" checked> Bathroom</label>
                <label style="color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="camsoda" data-voyeur="1" value="22" checked> Shower</label>
                <label style="color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="camsoda" data-voyeur="1" value="23" checked> Kitchen</label>
                <label style="color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="camsoda" data-voyeur="1" value="24" checked> Living</label>
                <label style="color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="camsoda" data-voyeur="1" value="29" checked> Cams</label>
              </div>
            </div>
            </div>
          </div>
          <div style="margin-bottom:14px;padding-top:10px;border-top:1px solid #2a2a3a;">
            <div style="margin-bottom:8px;"><span class="camsitelogosmall camsitelogoflirt4free" style="opacity:1;outline:none;" title="Flirt4Free" aria-label="Flirt4Free"></span></div>
            <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:6px 14px;">
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="flirt4free" value="1" checked> Free Chat</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="flirt4free" value="5" checked> Party Chat</label>
            </div>
          </div>
          <div style="margin-bottom:14px;padding-top:10px;border-top:1px solid #2a2a3a;">
            <div style="margin-bottom:8px;"><span class="camsitelogosmall camsitelogoolecams" style="opacity:1;outline:none;" title="Olecams" aria-label="Olecams"></span></div>
            <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:6px 14px;">
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="olecams" value="1" checked> Free Chat</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="olecams" value="2" checked> VIP Chat</label>
            </div>
          </div>
          <div style="margin-bottom:14px;padding-top:10px;border-top:1px solid #2a2a3a;">
            <div style="margin-bottom:8px;"><span class="camsitelogosmall camsitelogoshowup" style="opacity:1;outline:none;" title="Showup" aria-label="Showup"></span></div>
            <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:6px 14px;">
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="showup" value="1" checked> Free Chat</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="showup" value="2" checked> Private Show</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="showup" value="3" checked> Group Show</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="showup" value="4" checked> Sextoy Show</label>
            </div>
          </div>
          <div style="margin-bottom:14px;padding-top:10px;border-top:1px solid #2a2a3a;">
            <div style="margin-bottom:8px;"><span class="camsitelogosmall camsitelogostreamate" style="opacity:1;outline:none;" title="Streamate" aria-label="Streamate"></span></div>
            <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:6px 14px;">
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="streamate" value="1" checked> Free Chat</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="showtype" data-camsite="streamate" value="2" checked> Gold Show</label>
            </div>
          </div>
          <div style="margin-bottom:14px;padding-top:10px;border-top:1px solid #2a2a3a;">
            <div style="margin-bottom:8px;"><span class="camsitelogosmall camsitelogodreamcam" style="opacity:1;outline:none;" title="Dreamcam" aria-label="Dreamcam"></span></div>
            <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:6px 14px;">
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="vr" data-camsite="dreamcam" value="0" checked> Public Show</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="vr" data-camsite="dreamcam" value="1" checked> VR</label>
            </div>
          </div>
          <div style="margin-bottom:14px;padding-top:10px;border-top:1px solid #2a2a3a;">
            <div style="margin-bottom:8px;"><span class="camsitelogosmall camsitelogostripchat" style="opacity:1;outline:none;" title="Stripchat" aria-label="Stripchat"></span></div>
            <div style="padding-left:32px;display:flex;flex-wrap:wrap;gap:6px 14px;">
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="vr" data-camsite="stripchat" value="0" checked> Public Show</label>
              <label style="color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;gap:6px;"><input type="checkbox" class="idx-cb" data-group="vr" data-camsite="stripchat" value="1" checked> VR</label>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="wrap">
       <main>
         <h1 style="text-align:center;">Cam Show Archives — 26M+ Webcam Recordings from 27 Cam Sites</h1>
         <p>Cam Show Archives is the largest webcam recording archive on the internet, with recordings dating back to 2013. The site indexes stream recordings from major cam platforms including Stripchat, Chaturbate, MyFreeCams, and others. Each recording includes preview clips, model information, show statistics, and direct download links.</p>
         <hr>
         <div class="landingitemgroup">
          <div class="landingitem">
            <h2>What you’ll find here</h2>
            <ul>
              <li>25,782,841 camshow recordings.</li>
              <li>857,583 individual models.</li>
              <li>1,646 years 1 month 7 days+ total duration.</li>
              <li>8 PetaBytes (7,754 TB)+ worth of content.</li>
            </ul>
           <div class="ctawrapper">
              <a class="cta" href="/latest/page/1">View Latest Videos</a>
            </div>
          </div>
          <div class="landingitem">
            <h2>No bullshit</h2>
            <ul>
              <li><strong>Cookie-Free:</strong> We don't track you.</li>
              <li><strong>Popup-Free:</strong> We don't interrupt you.</li>
              <li><strong>Ad-Free:</strong> We don't sell your attention.</li>
              <li><strong>Friction-Free:</strong> No social logins or gatekeeping.</li>
            </ul>
            <div class="ctawrapper">
              <a class="cta" href="/categories">View Categories</a>
            </div>
          </div>
          <div class="landingitem">
            <h2>About the archive</h2>
            <ul>
              <li>Brief previews provided to confirm quality.</li>
              <li>Native stream encoding and quality.</li>
              <li>Video length between 5 minutes and 2 hours.</li>
              <li>Posted within seconds of stream ending.</li>
            </ul>
            <div class="ctawrapper">
              <a class="cta" href="/models">View Model Index</a>
            </div>
          </div>
          <div class="landingitem">
            <h2>24 hour statistics</h2>
            <ul>
              <li>New recording every 2 seconds.</li>
              <li>41,709 recordings from <a href="https://www.camshowarchives.com/camsites" class="camsiteStatsLink" style="color:#ff4d7a;font-weight:bold;text-decoration:none;">25 camsites</a>.</li>
              <li>22.48 TB worth of content.</li>
              <li>15,278 individual models.</li>
            </ul>
            <div class="ctawrapper">
              <a class="cta" href="https://www.camshowarchives.com/stats">View Stream Stats</a>
            </div>
          </div>
          <div class="landingitem">
            <h2>Powerful search</h2>
            <ul>
              <li>Live search by modelname.</li>
              <li>857,583 models from 27 cam sites.</li>
              <li>Facial recognition search.</li>
              <li>178,044,054 faces of 668,589 models.</li>
            </ul>
            <div class="ctawrapper">
              <a class="cta" href="/search">Search Recordings</a>
            </div>
          </div>
          <div class="landingitem">
            <h2>Recordings by gender</h2>
            <ul>
              <li>319K female models / 20.1M recordings</li>
              <li>64K couples / 3M recordings</li>
              <li>89K male models / 1.9M recordings</li>
              <li>24K trans models / 785K recordings</li>
            </ul>
            <div class="ctawrapper">
              <a class="cta" href="/genders">View Genders</a>
            </div>
          </div>
          <div class="landingitem">
            <h2>Reliable file hosting</h2>
            <ul>
              <li>10+ years of stable history.</li>
              <li>12,801,948 TezFiles recordings.</li>
              <li>6,053,776 FileBoom recordings.</li>
              <li>6,835,862 UpStore recordings.</li>
            </ul>
            <div class="ctawrapper">
              <a class="cta" href="/filehosts">View Filehosts</a>
            </div>
          </div>
          <div class="landingitem">
            <h2>Massive recording archive</h2>
            <ul>
              <li>3 years, 6 months of recordings.</li>
              <li>1,291 dates archived.</li>
              <li>Recordings for each date can be filtered.</li>
              <li>Navigate dates by swiping or arrow keys.</li>
            </ul>
            <div class="ctawrapper">
              <a class="cta" href="/archives">Explore Archives</a>
            </div>
          </div>
          <div class="landingitem">
            <h2>Popular recordings</h2>
            <ul>
              <li><a href="/most-viewed/page/1" style="color:#ff4d7a;font-weight:bold;text-decoration:none;">Most viewed</a> recordings.</li>
              <li>Most liked recordings.</li>
              <li>Each recording download = 1 like.</li>
              <li>Recording pages can also be liked.</li>
            </ul>
            <div class="ctawrapper">
              <a class="cta" href="/most-liked/page/1">View Most Liked</a>
            </div>
          </div>
        </div>
      </main>
    <script src="/scripts/js/main.min.js?v=4" defer></script>
    <button id="backToTop" onclick="backToTop()" style="display: none;">Back to Top &uarr;</button>
  <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a04821d72d8a4538',t:'MTc4MDI1MzA5MA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>
