*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:’Roboto’,sans-serif;background:#F5F4FB;color:#1E1A3C}
/* NAV */
.nav{background:#2B2260;border-bottom:3px solid #F5A623;position:sticky;top:0;z-index:999}
.nav-inner{max-width:1100px;margin:0 auto;padding:0 20px;display:flex;align-items:center;justify-content:space-between;height:66px;gap:16px}
.nav-logo{display:flex;align-items:center;gap:10px;text-decoration:none}
.nav-logo-icon{width:38px;height:38px;background:#5B4DB8;border:2px solid #F5A623;border-radius:8px;display:flex;align-items:center;justify-content:center}
.nav-logo img{height:52px;width:auto;object-fit:contain}
.nav-logo-text{font-family:’Luckiest Guy’,cursive;font-size:20px;color:white;letter-spacing:2px}
.nav-logo-text span{color:#F5A623}
.nav-links{display:flex;gap:4px}
.nav-link{background:none;border:none;color:rgba(255,255,255,0.7);font-family:’Roboto’,sans-serif;font-size:13px;font-weight:800;padding:7px 13px;border-radius:7px;cursor:pointer;transition:all 0.15s;text-decoration:none;display:inline-block}
.nav-link:hover,.nav-link.active{color:white;background:rgba(255,255,255,0.1)}
.nav-link.active{color:#F5A623}
.nav-cta{background:#F5A623;color:#2B2260;font-family:’Roboto’,sans-serif;font-size:13px;font-weight:900;padding:9px 18px;border-radius:7px;border:none;cursor:pointer;text-decoration:none;display:inline-block}
.nav-cta:hover{background:#D4841A;color:white}
.hamburger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:8px}
.hamburger span{width:22px;height:2px;background:white;border-radius:2px;display:block}
.mob-menu{display:none;background:#1e1748;padding:10px 20px 16px;flex-direction:column;gap:2px}
.mob-menu.open{display:flex}
.mob-link{background:none;border:none;color:rgba(255,255,255,0.85);font-family:’Roboto’,sans-serif;font-size:15px;font-weight:800;padding:11px 0;text-align:left;border-bottom:1px solid rgba(255,255,255,0.07);cursor:pointer;text-decoration:none;display:block}
/* PAGES */
.page{display:none}
.page.active{display:block}
/* HERO */
.hero{background:#4a3a8e;padding:60px 20px 52px;text-align:center;position:relative;overflow:hidden}
.hero::before{content:”;position:absolute;inset:0;background:radial-gradient(ellipse at 75% 25%,rgba(245,166,35,0.18) 0%,transparent 55%),radial-gradient(ellipse at 20% 80%,rgba(123,111,208,0.28) 0%,transparent 50%);pointer-events:none}
.hero-inner{position:relative;z-index:1;max-width:700px;margin:0 auto}
.hero h1{font-family:’Luckiest Guy’,cursive;font-size:clamp(36px,7vw,70px);color:white;letter-spacing:3px;line-height:1.05;margin-bottom:14px;text-shadow:0 4px 20px rgba(0,0,0,0.25)}
.hero h1 em{color:#F5A623;font-style:normal}
.hero-sub{font-size:15px;color:rgba(255,255,255,0.65);max-width:540px;margin:0 auto 28px;line-height:1.75}
.hero-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:32px}
.btn-gold{background:#F5A623;color:#2B2260;font-family:’Roboto’,sans-serif;font-weight:900;font-size:15px;padding:13px 26px;border-radius:10px;border:none;cursor:pointer;text-decoration:none;display:inline-block;transition:all 0.15s}
.btn-gold:hover{background:#D4841A;color:white;transform:translateY(-1px)}
.btn-ghost{background:rgba(255,255,255,0.08);color:white;font-family:’Roboto’,sans-serif;font-weight:800;font-size:15px;padding:12px 24px;border-radius:10px;border:2px solid rgba(255,255,255,0.2);cursor:pointer;text-decoration:none;display:inline-block;transition:all 0.15s}
.btn-ghost:hover{background:rgba(255,255,255,0.15)}
.hero-badges{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.hero-badge{background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.15);color:rgba(255,255,255,0.8);font-size:12px;font-weight:800;padding:6px 14px;border-radius:100px}
.hero-badge.gold{background:rgba(245,166,35,0.14);border-color:rgba(245,166,35,0.4);color:#F5A623}
/* STATS */
.stats{background:white;border-bottom:1px solid rgba(91,77,184,0.13)}
.stats-inner{max-width:1100px;margin:0 auto;padding:20px;display:flex;justify-content:space-around;flex-wrap:wrap;gap:10px}
.stat{text-align:center}
.stat-n{font-family:’Luckiest Guy’,cursive;font-size:28px;color:#3D3285;line-height:1}
.stat-n em{color:#F5A623;font-style:normal}
.stat-l{font-size:10px;font-weight:900;letter-spacing:1.5px;text-transform:uppercase;color:#7B7499;margin-top:2px}
/* FILTER BAR */
.filter-bar{background:white;border-bottom:2px solid rgba(91,77,184,0.13);position:sticky;top:69px;z-index:100}
.filter-inner{max-width:1100px;margin:0 auto;display:flex;overflow-x:auto;scrollbar-width:none}
.filter-inner::-webkit-scrollbar{display:none}
.fbtn{background:none;border:none;border-bottom:3px solid transparent;font-family:’Roboto’,sans-serif;font-size:13px;font-weight:800;color:#7B7499;padding:13px 15px;white-space:nowrap;cursor:pointer;transition:all 0.15s;display:flex;align-items:center;gap:6px}
.fbtn:hover{color:#5B4DB8}
.fbtn.active{color:#5B4DB8;border-bottom-color:#5B4DB8}
.fdot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}
/* LAYOUT */
.layout{max-width:1100px;margin:0 auto;padding:28px 20px 60px;display:grid;grid-template-columns:250px 1fr;gap:28px;align-items:start}
/* SIDEBAR */
.sidebar{position:sticky;top:122px}
.scard{background:white;border:1px solid rgba(91,77,184,0.13);border-radius:14px;padding:18px;margin-bottom:14px}
.stitle{font-size:10px;font-weight:900;letter-spacing:2.5px;text-transform:uppercase;color:#7B7499;margin-bottom:10px}
.sbtn{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border-radius:9px;background:none;border:none;font-family:’Roboto’,sans-serif;font-size:13px;font-weight:800;color:#1E1A3C;text-align:left;cursor:pointer;transition:background 0.12s}
.sbtn:hover{background:#F5F4FB}
.sbtn.active{background:#EEEDFB;color:#3D3285}
.sicon{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.scnt{margin-left:auto;font-size:11px;font-weight:800;color:#7B7499;background:#F5F4FB;padding:2px 8px;border-radius:100px}
.sbtn.active .scnt{background:rgba(91,77,184,0.15);color:#5B4DB8}
.info-box{background:#F5F4FB;border-radius:10px;padding:12px 14px;font-size:12px;color:#7B7499;line-height:1.7;font-weight:700}
.info-box strong{color:#3D3285}
.promo{background:#2B2260;border-radius:14px;padding:20px;color:white;border:2px solid rgba(245,166,35,0.35)}
.promo h4{font-family:’Luckiest Guy’,cursive;font-size:22px;color:#F5A623;letter-spacing:2px;margin-bottom:8px}
.promo p{font-size:12px;color:rgba(255,255,255,0.6);line-height:1.65;margin-bottom:14px}
.promo-btn{display:block;width:100%;background:#F5A623;color:#2B2260;font-family:’Roboto’,sans-serif;font-size:13px;font-weight:900;padding:10px;border-radius:8px;border:none;cursor:pointer;text-align:center}
.promo-btn:hover{background:#D4841A;color:white}
/* EVENTS */
.events-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;flex-wrap:wrap;gap:10px}
.ecnt{font-size:13px;color:#7B7499;font-weight:700}
.ecnt strong{color:#1E1A3C}
.esort{font-family:’Roboto’,sans-serif;font-size:13px;font-weight:800;color:#1E1A3C;border:1px solid rgba(91,77,184,0.13);border-radius:8px;padding:7px 12px;background:white;cursor:pointer}
.month-hd{font-family:’Luckiest Guy’,cursive;font-size:17px;letter-spacing:2px;color:#7B6FD0;margin:26px 0 12px;display:flex;align-items:center;gap:12px}
.month-hd::after{content:”;flex:1;height:1px;background:rgba(91,77,184,0.13)}
/* EVENT CARD */
.ecard{background:white;border:1px solid rgba(91,77,184,0.13);border-radius:14px;padding:18px 20px;margin-bottom:10px;display:grid;grid-template-columns:64px 1fr auto;gap:16px;align-items:center;cursor:pointer;transition:all 0.15s;position:relative;overflow:hidden}
.ecard::before{content:”;position:absolute;left:0;top:0;bottom:0;width:5px;border-radius:14px 0 0 14px}
.ecard[data-game=”pokemon”]::before{background:#FFCB05}
.ecard[data-game=”magic”]::before{background:#9B59B6}
.ecard[data-game=”lorcana”]::before{background:#3B82F6}
.ecard[data-game=”onepiece”]::before{background:#EF4444}
.ecard[data-game=”riftbound”]::before{background:#14B8A6}
.ecard[data-game=”gundam”]::before{background:#6B7280}
.ecard:hover{box-shadow:0 8px 28px rgba(43,34,96,0.14);border-color:rgba(91,77,184,0.28);transform:translateY(-2px)}
.ecard.featured{background:linear-gradient(130deg,#2B2260 0%,#3D3285 100%);border:2px solid rgba(245,166,35,0.42)}
.ecard.featured .dbox{background:rgba(255,255,255,0.09)}
.ecard.featured .dday{color:#F5A623}
.ecard.featured .dmon{color:rgba(255,255,255,0.45)}
.ecard.featured .etitle{color:white}
.ecard.featured .efmt{color:rgba(255,255,255,0.5)}
.ecard.featured .emeta span{color:rgba(255,255,255,0.5)}
.ecard.featured .eprice{color:#F5A623}
.ecard.featured .slbl{color:rgba(255,255,255,0.45)}
.ecard.featured .sbar{background:rgba(255,255,255,0.12)}
.ecard.featured .rb{background:#F5A623;color:#2B2260}
.feat-tag{position:absolute;top:14px;right:115px;font-size:10px;font-weight:900;letter-spacing:1.5px;text-transform:uppercase;color:#F5A623;background:rgba(245,166,35,0.14);border:1px solid rgba(245,166,35,0.35);padding:3px 10px;border-radius:100px}
.dbox{background:#EEEDFB;border-radius:10px;text-align:center;padding:10px 6px;flex-shrink:0}
.dday{font-family:’Luckiest Guy’,cursive;font-size:28px;line-height:1;color:#3D3285}
.dmon{font-size:10px;font-weight:900;text-transform:uppercase;color:#7B6FD0;letter-spacing:1px}
.ebody{min-width:0}
.ebadge{display:inline-flex;align-items:center;font-size:10px;font-weight:900;letter-spacing:1px;text-transform:uppercase;padding:3px 10px;border-radius:100px;margin-bottom:6px}
.b-pokemon{background:#FFF8DC;color:#8A6400}
.b-magic{background:#F5F0FF;color:#6B2FB8}
.b-lorcana{background:#EFF6FF;color:#1D4ED8}
.b-onepiece{background:#FEF2F2;color:#B91C1C}
.b-riftbound{background:#F0FDFB;color:#0F766E}
.b-gundam{background:#F3F4F6;color:#374151}
.etitle{font-size:16px;font-weight:900;color:#1E1A3C;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.efmt{font-size:12px;color:#7B7499;font-weight:700;margin-bottom:7px}
.emeta{display:flex;gap:14px}
.emeta span{font-size:12px;color:#7B7499;font-weight:700}
.eright{text-align:right;flex-shrink:0;min-width:105px}
.eprice{font-size:19px;font-weight:900;color:#3D3285;display:block;margin-bottom:5px}
.slbl{font-size:10px;font-weight:800;color:#7B7499;display:block;margin-bottom:3px}
.sbar{width:100%;height:5px;background:#F5F4FB;border-radius:100px;overflow:hidden;margin-bottom:8px}
.sfill{height:100%;border-radius:100px;background:#22C55E}
.sfill.warn{background:#F5A623}
.sfill.full{background:#EF4444}
.rb{font-family:’Roboto’,sans-serif;font-size:12px;font-weight:900;padding:8px 14px;border-radius:8px;border:none;cursor:pointer;transition:all 0.15s;text-decoration:none;display:inline-block}
.rb-open{background:#5B4DB8;color:white}
.rb-open:hover{background:#3D3285}
.rb-wait{background:#FFF3D6;color:#C98210;border:1px solid rgba(201,130,16,0.3)}
.rb-closed{background:#F5F4FB;color:#7B7499;cursor:default}
/* SHOP */
.shop{background:white;padding:60px 20px}
.sec-hd{text-align:center;margin-bottom:40px}
.sec-eye{font-size:11px;font-weight:900;letter-spacing:3px;text-transform:uppercase;color:#F5A623;margin-bottom:10px}
.sec-title{font-family:’Luckiest Guy’,cursive;font-size:clamp(26px,4vw,40px);color:#3D3285;letter-spacing:2px}
.sec-title em{color:#F5A623;font-style:normal}
.sec-sub{font-size:14px;color:#7B7499;margin-top:8px;line-height:1.7}
.shop-grid{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:14px}
.shop-card{background:#F5F4FB;border-radius:14px;padding:26px 18px;text-align:center;border:1px solid rgba(91,77,184,0.13);transition:all 0.18s;text-decoration:none;color:inherit;display:block}
.shop-card:hover{background:white;box-shadow:0 8px 28px rgba(43,34,96,0.14);transform:translateY(-3px);border-color:rgba(91,77,184,0.25)}
.shop-icon{font-size:34px;margin-bottom:10px}
.shop-name{font-weight:900;font-size:14px;color:#1E1A3C;margin-bottom:4px}
.shop-sub{font-size:12px;color:#7B7499;font-weight:700;line-height:1.5}
.shop-arr{font-size:18px;color:#5B4DB8;margin-top:10px;opacity:0;transition:opacity 0.15s;display:block}
.shop-card:hover .shop-arr{opacity:1}
/* PAGE HERO */
.phero{background:linear-gradient(155deg,#2B2260,#3D3285);padding:48px 20px 40px;text-align:center;border-bottom:3px solid #F5A623}
.phero h1{font-family:’Luckiest Guy’,cursive;font-size:clamp(28px,6vw,52px);color:white;letter-spacing:3px;margin-bottom:10px}
.phero h1 em{color:#F5A623;font-style:normal}
.phero p{font-size:14px;color:rgba(255,255,255,0.58);max-width:500px;margin:0 auto}
/* ABOUT */
.about-wrap{max-width:1100px;margin:0 auto;padding:56px 20px}
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center;margin-bottom:56px}
.about-badges{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.ab{background:#EEEDFB;color:#3D3285;font-size:11px;font-weight:900;letter-spacing:1px;text-transform:uppercase;padding:5px 13px;border-radius:100px}
.ab.gold{background:#FFF3D6;color:#C98210}
.about-title{font-family:’Luckiest Guy’,cursive;font-size:clamp(24px,4vw,36px);color:#3D3285;letter-spacing:2px;margin-bottom:14px}
.about-title em{color:#F5A623;font-style:normal}
.about-body{font-size:14px;color:#3D3870;line-height:1.8}
.about-body p{margin-bottom:12px}
.about-box{background:linear-gradient(145deg,#2B2260,#3D3285);border-radius:14px;padding:32px 24px;color:white;text-align:center;border:2px solid rgba(245,166,35,0.3)}
.about-lion{font-size:64px;margin-bottom:12px}
.about-box h3{font-family:’Luckiest Guy’,cursive;font-size:22px;color:#F5A623;letter-spacing:2px;margin-bottom:8px}
.about-box p{font-size:13px;color:rgba(255,255,255,0.58);line-height:1.7}
.about-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}
.ast{background:rgba(255,255,255,0.07);border-radius:10px;padding:12px 8px}
.ast-n{font-family:’Luckiest Guy’,cursive;font-size:24px;color:#FFD166}
.ast-l{font-size:10px;color:rgba(255,255,255,0.45);font-weight:900;letter-spacing:1px;text-transform:uppercase}
.team-section{background:white;padding:56px 20px}
.team-grid{max-width:1100px;margin:20px auto 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}
.tcard{background:#F5F4FB;border-radius:14px;padding:24px 16px;text-align:center;border:1px solid rgba(91,77,184,0.13);transition:all 0.18s}
.tcard:hover{background:white;box-shadow:0 2px 8px rgba(43,34,96,0.08)}
.tavatar{width:66px;height:66px;border-radius:50%;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;font-size:26px;border:3px solid #F5A623}
.tname{font-weight:900;font-size:15px;color:#1E1A3C;margin-bottom:3px}
.trole{font-size:12px;color:#7B7499;font-weight:700;margin-bottom:10px}
.tgames{display:flex;gap:5px;justify-content:center;flex-wrap:wrap}
.values-wrap{max-width:1100px;margin:0 auto;padding:56px 20px}
.vgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.vcard{background:white;border:1px solid rgba(91,77,184,0.13);border-radius:14px;padding:24px 20px;transition:all 0.15s}
.vcard:hover{box-shadow:0 2px 8px rgba(43,34,96,0.08);border-color:rgba(91,77,184,0.25)}
.vicon{font-size:28px;margin-bottom:12px}
.vtitle{font-weight:900;font-size:16px;color:#3D3285;margin-bottom:8px}
.vbody{font-size:13px;color:#7B7499;line-height:1.7}
/* CONTACT */
.contact-wrap{max-width:1100px;margin:0 auto;padding:56px 20px}
.contact-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:44px;align-items:start}
.contact-info h2{font-family:’Luckiest Guy’,cursive;font-size:30px;color:#3D3285;letter-spacing:2px;margin-bottom:8px}
.contact-info h2 em{color:#F5A623;font-style:normal}
.contact-info>p{font-size:14px;color:#7B7499;line-height:1.8;margin-bottom:26px}
.ct-block{margin-bottom:20px}
.ct-lbl{font-size:10px;font-weight:900;letter-spacing:2px;text-transform:uppercase;color:#7B7499;margin-bottom:10px}
.ct-item{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px}
.ct-icon{width:38px;height:38px;border-radius:9px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:17px;background:#EEEDFB}
.ct-text{font-weight:800;font-size:14px;color:#1E1A3C}
.ct-sub{font-size:12px;color:#7B7499;margin-top:1px}
.ct-link{color:#5B4DB8;font-weight:800;font-size:14px;text-decoration:none}
.ct-link:hover{text-decoration:underline}
.soc-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.soc-btn{display:flex;align-items:center;gap:8px;background:#F5F4FB;border:1px solid rgba(91,77,184,0.13);border-radius:9px;padding:9px 14px;font-size:13px;font-weight:800;color:#1E1A3C;transition:all 0.15s;text-decoration:none}
.soc-btn:hover{background:#EEEDFB;border-color:rgba(91,77,184,0.25);color:#3D3285}
.map-btn{background:#EEEDFB;border-radius:14px;height:170px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(91,77,184,0.13);margin-top:18px;text-decoration:none;transition:all 0.15s}
.map-btn:hover{background:#E0DEFA;border-color:rgba(91,77,184,0.3)}
.map-inner{text-align:center}
.map-inner .pin{font-size:36px}
.map-inner .mlbl{font-weight:800;color:#3D3285;font-size:14px;margin-top:6px}
.map-inner .msub{font-size:12px;color:#7B7499}
.form-card{background:white;border-radius:14px;border:1px solid rgba(91,77,184,0.13);padding:28px}
.form-card h3{font-family:’Luckiest Guy’,cursive;font-size:24px;color:#3D3285;letter-spacing:2px;margin-bottom:18px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fg{margin-bottom:14px}
.fl{font-size:10px;font-weight:900;letter-spacing:1.5px;text-transform:uppercase;color:#7B7499;display:block;margin-bottom:5px}
.fi,.fsel,.fta{width:100%;padding:10px 13px;font-family:’Roboto’,sans-serif;font-size:14px;font-weight:700;color:#1E1A3C;background:#F5F4FB;border:1px solid rgba(91,77,184,0.13);border-radius:9px;outline:none;transition:all 0.15s}
.fi:focus,.fsel:focus,.fta:focus{border-color:#5B4DB8;background:white;box-shadow:0 0 0 3px rgba(91,77,184,0.1)}
.fta{resize:vertical;min-height:100px}
.fsub{width:100%;background:#5B4DB8;color:white;font-family:’Roboto’,sans-serif;font-size:15px;font-weight:900;padding:13px;border-radius:10px;border:none;cursor:pointer;transition:background 0.15s}
.fsub:hover{background:#3D3285}
.faq-list{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.faq-item{background:#F5F4FB;border-radius:9px;padding:11px 13px;cursor:pointer;transition:background 0.15s}
.faq-item:hover{background:#EEEDFB}
.faq-q{font-size:13px;font-weight:900;color:#3D3285}
.faq-a{font-size:12px;color:#7B7499;margin-top:3px}
/* MODAL */
.modal-ov{display:none;position:fixed;inset:0;background:rgba(30,26,60,0.65);z-index:2000;align-items:center;justify-content:center;padding:20px}
.modal-ov.open{display:flex}
.modal-box{background:white;border-radius:18px;width:100%;max-width:580px;max-height:90vh;overflow-y:auto;box-shadow:0 24px 60px rgba(30,26,60,0.35);border:2px solid rgba(245,166,35,0.2)}
.mhead{background:linear-gradient(135deg,#2B2260,#3D3285);border-radius:16px 16px 0 0;padding:26px 28px 22px;position:relative;border-bottom:3px solid #F5A623}
.mclose{position:absolute;top:14px;right:14px;background:rgba(255,255,255,0.1);border:none;color:white;width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:20px;display:flex;align-items:center;justify-content:center}
.mclose:hover{background:rgba(255,255,255,0.2)}
.mhead h2{font-family:’Luckiest Guy’,cursive;font-size:26px;color:white;letter-spacing:2px;margin:8px 0 4px}
.mhead p{font-size:13px;color:rgba(255,255,255,0.5)}
.mbody{padding:24px 28px}
.mgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px}
.mi-lbl{font-size:10px;font-weight:900;letter-spacing:2px;text-transform:uppercase;color:#7B7499;margin-bottom:3px}
.mi-val{font-size:15px;font-weight:800;color:#1E1A3C}
.mi-sub{font-size:12px;color:#7B7499;margin-top:1px}
.mdesc{font-size:14px;color:#7B7499;line-height:1.75;margin-bottom:18px}
.mdiv{height:1px;background:rgba(91,77,184,0.13);margin:18px 0}
.msec{font-size:10px;font-weight:900;letter-spacing:2.5px;text-transform:uppercase;color:#7B7499;margin-bottom:10px}
.mfaq{margin-bottom:12px}
.mfaq-q{font-size:13px;font-weight:900;color:#1E1A3C;margin-bottom:4px;display:flex;gap:6px}
.mfaq-q::before{content:’›’;color:#5B4DB8;font-size:16px;flex-shrink:0}
.mfaq-a{font-size:13px;color:#7B7499;line-height:1.65;padding-left:14px}
.parts{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}
.pchip{background:#EEEDFB;border-radius:100px;font-size:12px;font-weight:800;color:#3D3285;padding:4px 12px}
.mfoot{padding:0 28px 24px}
.mreg{width:100%;background:#5B4DB8;color:white;font-family:’Nunito’,sans-serif;font-size:15px;font-weight:900;padding:13px;border-radius:10px;border:none;cursor:pointer;margin-bottom:7px;text-decoration:none;display:block;text-align:center}
.mreg:hover{background:#3D3285}
.mnote{font-size:12px;color:#7B7499;text-align:center}
/* FOOTER */
.footer{background:#2B2260;color:white;border-top:3px solid #F5A623}
.footer-main{max-width:1100px;margin:0 auto;padding:48px 20px 32px;display:grid;grid-template-columns:2fr 1fr 1fr 1.2fr;gap:36px}
.fl-name{font-family:’Luckiest Guy’,cursive;font-size:20px;color:white;letter-spacing:2px;margin-bottom:12px}
.fl-name em{color:#F5A623;font-style:normal}
.fl-desc{font-size:13px;color:rgba(255,255,255,0.48);line-height:1.75;max-width:240px;margin-bottom:16px}
.fl-socs{display:flex;gap:8px}
.fl-soc{width:34px;height:34px;border-radius:8px;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.12);display:flex;align-items:center;justify-content:center;font-size:15px;text-decoration:none;transition:all 0.15s}
.fl-soc:hover{background:rgba(245,166,35,0.2);border-color:rgba(245,166,35,0.4)}
.fc-title{font-size:10px;font-weight:900;letter-spacing:2.5px;text-transform:uppercase;color:#F5A623;margin-bottom:12px}
.fc-links{display:flex;flex-direction:column;gap:7px}
.fc-link{font-size:13px;color:rgba(255,255,255,0.52);font-weight:700;text-decoration:none;transition:color 0.15s;background:none;border:none;cursor:pointer;text-align:left;font-family:’Roboto’,sans-serif}
.fc-link:hover{color:white}
.nl-desc{font-size:13px;color:rgba(255,255,255,0.48);line-height:1.65;margin-bottom:10px}
.nl-row{display:flex;gap:8px}
.nl-inp{flex:1;padding:10px 13px;font-family:’Nunito’,sans-serif;font-size:13px;font-weight:700;color:#1E1A3C;background:rgba(255,255,255,0.92);border:none;border-radius:8px;outline:none}
.nl-btn{background:#F5A623;color:#2B2260;font-family:’Nunito’,sans-serif;font-size:13px;font-weight:900;padding:10px 13px;border-radius:8px;border:none;cursor:pointer}
.nl-btn:hover{background:#D4841A;color:white}
.footer-bottom{max-width:1100px;margin:0 auto;padding:16px 20px;border-top:1px solid rgba(255,255,255,0.08);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}
.fb-copy{font-size:12px;color:rgba(255,255,255,0.3);font-weight:700}
.fb-links{display:flex;gap:14px}
.fb-link{font-size:12px;color:rgba(255,255,255,0.3);font-weight:700;text-decoration:none}
.fb-link:hover{color:rgba(255,255,255,0.6)}
/* TOAST */
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(80px);background:#2B2260;color:white;font-size:14px;font-weight:800;padding:12px 26px;border-radius:100px;z-index:9999;transition:transform 0.35s cubic-bezier(.34,1.56,.64,1);pointer-events:none;border:2px solid rgba(245,166,35,0.4);box-shadow:0 8px 28px rgba(43,34,96,0.14);white-space:nowrap}
.toast.show{transform:translateX(-50%) translateY(0)}
/* EMPTY */
.empty{text-align:center;padding:60px 20px}
.empty-icon{font-size:48px;margin-bottom:14px}
.empty-title{font-weight:900;font-size:17px;color:#1E1A3C;margin-bottom:6px}
.empty-sub{font-size:13px;color:#7B7499}
/* REVIEWS */
.reviews-section{background:#F5F4FB;padding:60px 20px}
.reviews-grid{max-width:1100px;margin:24px auto 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}
.rcard{background:white;border-radius:14px;padding:24px;border:1px solid rgba(91,77,184,0.13);transition:all 0.15s;display:flex;flex-direction:column;gap:12px}
.rcard:hover{box-shadow:0 8px 28px rgba(43,34,96,0.1);border-color:rgba(91,77,184,0.25);transform:translateY(-2px)}
.rcard-top{display:flex;align-items:center;gap:12px}
.ravatar{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:900;color:white;flex-shrink:0}
.rname{font-weight:900;font-size:15px;color:#1E1A3C}
.rtime{font-size:11px;color:#7B7499;margin-top:2px}
.rstars{color:#F5A623;font-size:16px;letter-spacing:2px}
.rtext{font-size:13px;color:#3D3870;line-height:1.75}
.reviews-footer{text-align:center;margin-top:28px}
.reviews-score{display:inline-flex;align-items:center;gap:16px;background:white;border:1px solid rgba(91,77,184,0.13);border-radius:14px;padding:16px 28px;margin-bottom:16px}
.score-big{font-family:’Luckiest Guy’,cursive;font-size:48px;color:#3D3285;line-height:1}
.score-stars{color:#F5A623;font-size:20px;letter-spacing:2px}
.score-lbl{font-size:12px;color:#7B7499;font-weight:700;margin-top:2px}
/* RESPONSIVE */
@media(max-width:900px){
.layout{grid-template-columns:1fr}
.sidebar{position:static}
.about-grid,.contact-grid{grid-template-columns:1fr}
.footer-main{grid-template-columns:1fr 1fr}
.main-nav,.nav-cta{display:none}
.hamburger{display:flex}
}
@media(max-width:600px){
.footer-main{grid-template-columns:1fr}
.ecard{grid-template-columns:56px 1fr}
.eright{display:none}
.form-row{grid-template-columns:1fr}
.mgrid{grid-template-columns:1fr 1fr}
.hero h1{font-size:36px}
}
/* REVIEWS */
.reviews{background:#F5F4FB;padding:60px 20px}
.review-grid{max-width:1100px;margin:20px auto 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}
.rcard{background:white;border-radius:14px;padding:24px;border:1px solid rgba(91,77,184,0.13);transition:all 0.15s;display:flex;flex-direction:column;gap:12px}
.rcard:hover{box-shadow:0 8px 28px rgba(43,34,96,0.1);transform:translateY(-2px)}
.rcard-top{display:flex;align-items:center;gap:12px}
.ravatar{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:900;color:white;flex-shrink:0}
.rname{font-weight:900;font-size:15px;color:#1E1A3C}
.rwhen{font-size:12px;color:#7B7499;margin-top:2px}
.rstars{color:#F5A623;font-size:16px;letter-spacing:1px}
.rtext{font-size:13px;color:#3D3870;line-height:1.75;flex:1}
.rbadge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;color:#5B4DB8;background:#EEEDFB;padding:4px 10px;border-radius:100px;align-self:flex-start}
.reviews-cta{text-align:center;margin-top:28px}
.reviews-score{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.score-big{font-family:’Luckiest Guy’,cursive;font-size:52px;color:#3D3285;line-height:1}
.score-stars{color:#F5A623;font-size:20px;letter-spacing:2px}
.score-lbl{font-size:13px;color:#7B7499;font-weight:700;margin-top:2px}
TCG Toernooien
& Evenementen
Speel mee in officiële toernooien voor Pokémon TCG, Magic: The Gathering, Disney Lorcana, One Piece TCG, Riftbound en Gundam Card Game!
Over Welpie Toys
Jouw lokale TCG-hub — waar kaarten spelen meer is dan een hobby.
Officieel TO
Heerlen, Nederland
een community
Welpie Toys begon als een passieproject van kaartspel-fanatici in het hart van Heerlen. Wat begon met een tafel vol Pokémon kaarten, is uitgegroeid tot één van de meest geliefde TCG evenementencentra van Limburg.
Wij geloven dat trading card games meer zijn dan stukjes karton — het zijn verbindingen. Elke draft, elk toernooi en elke league-avond brengt mensen samen met een gedeelde passie voor strategie, collecties en plezier.
Of je nu voor het eerst een deck in handen neemt of al jaren competitief speelt: bij Welpie Toys ben je altijd welkom. Van Pokémon tot Gundam — wij coveren zes grote TCG’s!
Welpie vertelt…
“Bij ons gaat het niet alleen om winnen. Het gaat om de spanning van een nieuw booster pack, de voldoening van een goed gespeeld duel, en de vriendschappen die je onderweg maakt.”
Neem contact op
Vragen over evenementen, inschrijvingen of de winkel? Wij helpen je graag!
Hoe kunnen we helpen?
Of je nu vragen hebt over een toernooi of gewoon eens langs wilt komen — wij staan voor je klaar.
Dinsdag: 10:00 – 18:00
Woensdag: 10:00 – 18:00
Donderdag: 10:00 – 20:00
Vrijdag: 10:00 – 18:00
Zaterdag: 10:00 – 17:30
Zondag: 12:00 – 17:00
Feestdagen: 12:00 – 17:00
m.u.v. 1e Kerstdag, 1e Paasdag, 1e Pinksterdag & 1 januari
Stuur een bericht
Vraag over een evenement
Inschrijving / annulering
Toernooi organiseren
Winkel / producten
Samenwerking
Overig
var curGame = ‘all’, curType = ‘all’, curSort = ‘date’;
var EV = []; // loaded from Google Sheets
var SHEET_URL = ‘https://docs.google.com/spreadsheets/d/e/2PACX-1vR2j0hymfdimQCG69yQhcSBC14skmCFYdzvMqvQzSXcGN6hqT-j_RzO8UOYfjwiEp77x1dHMpkjC8MD/pub?output=csv’;
var GAME_NAMES = {pokemon:’Pokémon TCG’,magic:’Magic: The Gathering’,lorcana:’Disney Lorcana’,onepiece:’One Piece TCG’,riftbound:’Riftbound’,gundam:’Gundam Card Game’};
var BADGE_CLS = {pokemon:’b-pokemon’,magic:’b-magic’,lorcana:’b-lorcana’,onepiece:’b-onepiece’,riftbound:’b-riftbound’,gundam:’b-gundam’};
var REG_LINKS = {
pokemon: ‘https://www.pokemon.com/us/play-pokemon’,
magic: ‘https://locator.wizards.com/search?searchType=magic-events&query=Corio%20Center%2030%2C%206411%20LX%20Heerlen%2C%20Nederland&distance=10&page=1&sort=date&sortDirection=Asc’,
lorcana: ‘https://tcg.ravensburgerplay.com/stores/60015e5a-1cd8-425f-9fcc-ebec78d6bb0d’,
onepiece: ‘https://www.bandai-tcg-plus.com/series’,
riftbound:’https://locator.riftbound.uvsgames.com/stores/e038d2c1-e1db-47b6-9b50-a974b664a818′,
gundam: ‘https://www.bandai-tcg-plus.com/series’
};
var MONTH_FULL = {JAN:’Januari’,FEB:’Februari’,MRT:’Maart’,APR:’April’,MEI:’Mei’,JUN:’Juni’,JUL:’Juli’,AUG:’Augustus’,SEP:’September’,OKT:’Oktober’,NOV:’November’,DEC:’December’};
var MONTH_ORD = [‘JAN’,’FEB’,’MRT’,’APR’,’MEI’,’JUN’,’JUL’,’AUG’,’SEP’,’OKT’,’NOV’,’DEC’];
function parseCSV(text) {
var lines = text.trim().split(‘\n’);
var headers = lines[0].split(‘,’).map(function(h){ return h.trim().replace(/”/g,”); });
var result = [];
for(var i = 1; i < lines.length; i++) {
if(!lines[i].trim()) continue;
// Handle quoted commas
var vals = [];
var cur = '';
var inQ = false;
for(var c = 0; c < lines[i].length; c++) {
if(lines[i][c] === '"') { inQ = !inQ; }
else if(lines[i][c] === ',' && !inQ) { vals.push(cur.trim()); cur = ''; }
else { cur += lines[i][c]; }
}
vals.push(cur.trim());
var obj = {};
headers.forEach(function(h, idx){ obj[h] = vals[idx] || ''; });
result.push(obj);
}
return result;
}
function normalizeMaand(m) {
if(!m) return 'MEI';
m = (m+'').toLowerCase().trim();
var map = {'jan':'JAN','januari':'JAN','feb':'FEB','februari':'FEB','mrt':'MRT','maart':'MRT','apr':'APR','april':'APR','mei':'MEI','may':'MEI','jun':'JUN','juni':'JUN','june':'JUN','jul':'JUL','juli':'JUL','july':'JUL','aug':'AUG','augustus':'AUG','sep':'SEP','september':'SEP','okt':'OKT','oktober':'OKT','oct':'OKT','october':'OKT','nov':'NOV','november':'NOV','dec':'DEC','december':'DEC'};
return map[m] || m.toUpperCase().substring(0,3);
}
function formatDatum(dag, maand, datum) {
if(datum && isNaN((datum+'')[0])) return datum+'';
var mn = {'JAN':'januari','FEB':'februari','MRT':'maart','APR':'april','MEI':'mei','JUN':'juni','JUL':'juli','AUG':'augustus','SEP':'september','OKT':'oktober','NOV':'november','DEC':'december'};
var m = normalizeMaand(maand);
return dag + ' ' + (mn[m] || maand);
}
function parseCSV(text) {
// Normalize line endings
text = text.replace(/\r\n/g,'\n').replace(/\r/g,'\n');
var lines = text.trim().split('\n');
if(lines.length < 2) return [];
// Parse a single CSV line handling quoted fields
function parseLine(line) {
var result = [];
var cur = '';
var inQ = false;
for(var i = 0; i < line.length; i++) {
var c = line[i];
if(c === '"') {
if(inQ && line[i+1] === '"') { cur += '"'; i++; }
else { inQ = !inQ; }
} else if(c === ',' && !inQ) {
result.push(cur.trim());
cur = '';
} else {
cur += c;
}
}
result.push(cur.trim());
return result;
}
var headers = parseLine(lines[0]);
var rows = [];
for(var i = 1; i < lines.length; i++) {
if(!lines[i].trim()) continue;
var vals = parseLine(lines[i]);
var obj = {};
headers.forEach(function(h, idx) {
obj[h.trim().toLowerCase()] = (vals[idx] || '').trim();
});
rows.push(obj);
}
return rows;
}
function loadEvents() {
var list = document.getElementById('ev-list');
list.innerHTML = '
‘;
var SHEET = ‘https://docs.google.com/spreadsheets/d/e/2PACX-1vR2j0hymfdimQCG69yQhcSBC14skmCFYdzvMqvQzSXcGN6hqT-j_RzO8UOYfjwiEp77x1dHMpkjC8MD/pub?output=csv’;
var urls = [
‘https://corsproxy.io/?’ + encodeURIComponent(SHEET),
‘https://api.allorigins.win/raw?url=’ + encodeURIComponent(SHEET),
SHEET
];
function tryFetch(index) {
if(index >= urls.length) {
list.innerHTML = ‘
‘;
return;
}
var ctrl = (typeof AbortController !== ‘undefined’) ? new AbortController() : null;
var tmr = ctrl ? setTimeout(function(){ ctrl.abort(); }, 5000) : null;
fetch(urls[index], ctrl ? {signal: ctrl.signal} : {})
.then(function(r) {
if(tmr) clearTimeout(tmr);
if(!r.ok) throw new Error(‘HTTP ‘+r.status);
return r.text();
})
.then(function(csv) {
if(!csv || csv.length =m?’full’:s/m>=0.75?’warn’:”; }
function sLabel(s,m){ return s>=m?’Vol – wachtlijst’:s+’/’+m+’ ingeschreven’; }
function rClass(s,m){ return s>=m?’rb rb-wait’:’rb rb-open’; }
function rText(s,m) { return s>=m?’Wachtlijst’:’Inschrijven’; }
function render(){
var filtered = EV.filter(function(e){
if(curGame!==’all’ && e.game!==curGame) return false;
if(curType!==’all’ && e.type!==curType) return false;
return true;
});
filtered.sort(function(a,b){
if(curSort===’date’) return (a.mon+a.day)>(b.mon+b.day)?1:-1;
if(curSort===’price-asc’) return a.pn-b.pn;
if(curSort===’price-desc’) return b.pn-a.pn;
if(curSort===’spots’) return (b.max-b.spots)-(a.max-a.spots);
return 0;
});
document.getElementById(‘vcnt’).textContent = filtered.length;
// Update sidebar counts
var cntAll = EV.length;
var cntToernooi = EV.filter(function(e){ return e.type===’toernooi’; }).length;
var cntPre = EV.filter(function(e){ return e.type===’prerelease’; }).length;
var cntLeague = EV.filter(function(e){ return e.type===’league’; }).length;
if(document.getElementById(‘cnt-all’)) document.getElementById(‘cnt-all’).textContent = cntAll;
if(document.getElementById(‘cnt-toernooi’)) document.getElementById(‘cnt-toernooi’).textContent = cntToernooi;
if(document.getElementById(‘cnt-prerelease’)) document.getElementById(‘cnt-prerelease’).textContent = cntPre;
if(document.getElementById(‘cnt-league’)) document.getElementById(‘cnt-league’).textContent = cntLeague;
if(document.getElementById(‘cnt-locatie’)) document.getElementById(‘cnt-locatie’).textContent = cntAll;
var grouped = {};
filtered.forEach(function(e){ if(!grouped[e.mon]) grouped[e.mon]=[]; grouped[e.mon].push(e); });
var c = document.getElementById(‘ev-list’);
c.innerHTML = ”;
if(!filtered.length){
c.innerHTML = ‘
‘;
return;
}
MONTH_ORD.forEach(function(m){
if(!grouped[m]) return;
var h = document.createElement(‘div’);
h.className = ‘month-hd’;
h.textContent = MONTH_FULL[m];
c.appendChild(h);
grouped[m].forEach(function(ev){
var pct = ev.spots/ev.max;
var card = document.createElement(‘div’);
card.className = ‘ecard’+(ev.feat?’ featured’:”);
card.setAttribute(‘data-game’,ev.game);
card.setAttribute(’tabindex’,’0′);
card.onclick = function(){ openModal(ev); };
card.onkeydown = function(e){ if(e.key===’Enter’) openModal(ev); };
card.innerHTML = (ev.feat?’✦ Uitgelicht‘:”)+
‘
‘+
‘
‘‘+GAME_NAMES[ev.game]+’‘+
‘
‘+
‘
‘+
‘
‘+
‘
‘+
‘
‘;
c.appendChild(card);
});
});
}
function openModal(ev){
var pct = ev.spots/ev.max;
var free = Math.max(0,ev.max-ev.spots);
var faq = ev.faq.map(function(f){
return ‘
‘;
}).join(”);
var parts = ev.parts.length?’
‘:”;
document.getElementById(‘modal-box’).innerHTML =
‘
‘‘+
‘‘+GAME_NAMES[ev.game]+’‘+
‘
‘+ev.title+’
‘+ev.fmt+’
‘+
‘
‘+
‘
‘
‘
‘+
‘
‘+
‘
‘+
‘
‘+
‘
‘+
‘
‘+
‘
‘+
‘
‘+faq+parts+
‘
‘+
‘
‘‘+rText(ev.spots,ev.max)+’ – ‘+ev.price+’‘+
‘
‘+
‘
‘;
document.getElementById(‘modal’).className = ‘modal-ov open’;
document.body.style.overflow = ‘hidden’;
}
function closeModal(){
document.getElementById(‘modal’).className = ‘modal-ov’;
document.body.style.overflow = ”;
}
function fGame(g,btn){
curGame = g;
document.querySelectorAll(‘.fbtn’).forEach(function(b){b.classList.remove(‘active’)});
btn.classList.add(‘active’);
render();
}
function fType(t,btn){
curType = t;
document.querySelectorAll(‘.sbtn’).forEach(function(b){b.classList.remove(‘active’)});
btn.classList.add(‘active’);
render();
}
function sortEvs(v){ curSort=v; render(); }
function showPage(id){
document.querySelectorAll(‘.page’).forEach(function(p){p.classList.remove(‘active’)});
document.getElementById(‘page-‘+id).classList.add(‘active’);
[‘home’,’about’,’contact’].forEach(function(p,i){
var el = document.getElementById(‘nav-‘+p);
if(el) el.classList.toggle(‘active’, p===id);
});
window.scrollTo(0,0);
}
function toggleMob(){
var m = document.getElementById(‘mobMenu’);
m.classList.toggle(‘open’);
}
function toast(msg){
var t = document.getElementById(’toast’);
t.textContent = msg;
t.classList.add(‘show’);
clearTimeout(t._t);
t._t = setTimeout(function(){ t.classList.remove(‘show’); }, 3000);
}
document.addEventListener(‘keydown’,function(e){ if(e.key===’Escape’) closeModal(); });
loadEvents();