@font-face{
  font-family:"Dreamcast";
  src:url("../fonts/dreamcast.ttf") format("truetype");
  font-weight:400;
  font-style:normal;
  font-display:swap;
}
:root{
  --blue:#516a9a;
  --dreamcast-blue:#516a9a;
  --dark:#101010;
  --line:#d8d8d8;
  --muted:#6d6d6d;
  --page-overlay:.865;
  --card-gap:28px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  min-height:100vh;
  margin:0;
  color:#111;
  font-family:"Dreamcast",Arial,Helvetica,sans-serif;
  font-size:16px;
  line-height:1.45;
  background:transparent;
  position:relative;
  z-index:0;
}
body::before,body::after{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
}
body::before{
  z-index:-2;
  background-color:#fff;
  background-image:url("../images/sega-pattern.png");
  background-repeat:repeat;
  background-position:center top;
  background-size:var(--sega-bg-size,1720px) auto;
}
body::after{
  z-index:-1;
  background:rgba(255,255,255,var(--page-overlay));
}
body.lightbox-open{overflow:hidden}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button,input,select,textarea{font:inherit}
.shell{width:min(1180px,calc(100% - 40px));margin:auto}
.content-shell{margin-top:28px;margin-bottom:28px;padding:1px 28px 46px;background:transparent}
body.table-page .content-shell{background:rgba(255,255,255,.82);box-shadow:0 8px 28px rgba(0,0,0,.09);border-radius:26px}
.site-header{background:#fff;border-bottom:1px solid #e3e3e3;box-shadow:0 3px 14px rgba(0,0,0,.08)}
.head-in{min-height:102px;display:flex;align-items:center;justify-content:space-between;gap:32px}
.brand{display:flex;align-items:center;gap:12px}
.brand img{width:112px;height:auto}
.brand span{font-size:13px;color:#555;max-width:190px}
.nav{display:flex;flex-wrap:wrap;justify-content:flex-end}
.nav a{padding:14px 15px;border-left:1px solid #e5e5e5;font-size:15px}
.nav a:hover,.nav a[aria-current=page]{color:#fff;background:var(--blue)}
.hero{min-height:620px;display:grid;grid-template-columns:minmax(390px,.9fr) minmax(0,1.1fr);align-items:center;gap:34px;padding:46px 24px 64px;margin-top:28px;margin-bottom:28px;background:transparent}
.hero>div{align-self:center;padding-left:clamp(0px,2vw,26px)}
.hero h1{font-size:58px;line-height:1.07;margin:0 0 28px;color:#111;max-width:680px}
.hero h1 span{color:var(--dreamcast-blue);font-size:calc(1em + 5px)}
.hero .count{font-size:28px;font-weight:700;color:#333}
.console{width:100%;filter:drop-shadow(0 22px 22px rgba(0,0,0,.18))}
.site-footer{border-top:1px solid #ddd;margin-top:60px;background:#fff;box-shadow:0 -3px 14px rgba(0,0,0,.06)}
.foot-in{min-height:122px;display:flex;align-items:center;justify-content:space-between;gap:25px;color:#555;font-size:14px}
.foot-in strong{color:#222;font-size:16px}
.page-title{font-size:46px;margin:46px 0 30px;color:var(--dreamcast-blue)}
.alphabet{--alpha-columns:15;--alpha-size:clamp(2.7rem,4.4vw,4.4rem);display:grid;grid-template-columns:repeat(var(--alpha-columns),minmax(0,var(--alpha-size)));justify-content:center;gap:0 .05rem;margin:0 0 34px;position:sticky;top:0;background:transparent;padding:6px 0;z-index:5;border:0;backdrop-filter:none}
.alphabet a{position:relative;isolation:isolate;display:flex;align-items:center;justify-content:center;width:var(--alpha-size);height:var(--alpha-size);min-width:var(--alpha-size);padding:clamp(.16rem,.38vw,.34rem);color:var(--blue);font-size:clamp(.8rem,1.3vw,1.15rem);line-height:1.02;font-weight:700;text-align:center;background:transparent;border:0;box-shadow:none;overflow:hidden}
.alphabet a:hover,.alphabet a:focus-visible{color:#516a9a;transform:translateY(-1px) scale(1.03)}
.alphabet a:focus-visible{outline:3px solid rgba(81,106,154,.28);outline-offset:2px;border-radius:50%}
.alphabet a::before{content:"";position:absolute;inset:0;border-radius:50%;background:url("../images/section-disc.png") center/85% no-repeat;opacity:.78;z-index:-1}
.alphabet a[data-label-length="long"],.alphabet a:first-child{font-size:clamp(.55rem,.92vw,.8rem);line-height:1.06}
.alphabet a span,.alphabet a{word-break:break-word}
.table-page .content-shell{padding-left:32px;padding-right:32px}
.index-section{margin:0 0 34px}
.index-section h2{font-size:32px;color:var(--dreamcast-blue);border-bottom:2px solid var(--blue);padding-bottom:7px}
.title-list{columns:2;column-gap:55px;padding-left:20px}
.title-list li{break-inside:avoid;margin:0 0 8px}
.title-list a:hover{color:var(--blue);text-decoration:underline}
.notice{background:rgba(245,249,253,.94);border-left:4px solid var(--blue);padding:13px 16px;color:#444;margin:0 0 24px}
.searchbar{display:flex;gap:10px;margin:0 0 25px}
.searchbar input{flex:1;min-width:0;padding:13px 15px;border:1px solid #bbb;font-size:16px;background:#fff}
.searchbar button{padding:0 20px;background:var(--blue);border:0;color:#fff;font-weight:700;cursor:pointer}
.catalog-section{margin:0 0 44px;scroll-margin-top:70px}
.catalog-letter{font-size:32px;color:var(--dreamcast-blue);border-bottom:2px solid var(--blue);padding-bottom:8px;margin:0 0 22px}
.catalog-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--card-gap)}
.game-card{display:block;overflow:hidden;border:1px solid #ccd6df;border-radius:10px;background:#fff;box-shadow:0 4px 15px rgba(0,0,0,.08);scroll-margin-top:85px}
.game-card-body{display:grid;grid-template-columns:240px minmax(0,1fr);gap:28px;height:100%;padding:24px}
.game-media{align-self:start;display:flex;flex-direction:column;gap:14px}
.game-cover{width:240px;height:240px;object-fit:cover;background:#eee;border:1px solid #ddd}
.game-copy{min-width:0;display:flex;flex-direction:column}
.game-copy h2{font-size:25px;line-height:1.18;margin:0 0 14px;color:#111}
.game-title-link{display:block;color:#111;text-decoration-thickness:2px;text-underline-offset:4px}
.game-title-link:hover,.game-title-link:focus-visible{color:var(--blue);text-decoration:underline}
.game-title-link:focus-visible{outline:3px solid rgba(81,106,154,.28);outline-offset:4px;border-radius:2px}
.game-description,.game-detail-description{white-space:pre-line;margin:0;color:#333}
.game-copy .pending{color:#999;font-style:italic;font-size:14px;margin:0}
.meta{display:flex;align-items:center;justify-content:center;gap:8px}
.meta-under-cover{width:240px;min-height:76px;margin:0}
.meta-icon,.vibration-icon{width:70px;height:70px;flex:0 0 70px;object-fit:contain}
.vibration-icon{display:grid;place-items:center}
.vibration-icon img{width:100%;height:100%;object-fit:contain}
.breadcrumbs{display:flex;flex-wrap:wrap;gap:8px;margin:28px 0 20px;color:#666;font-size:14px}
.breadcrumbs a{color:var(--blue);font-weight:700}
.game-detail{display:grid;grid-template-columns:420px minmax(0,1fr);gap:42px;align-items:start;padding:30px;border:1px solid #ccd6df;border-radius:12px;background:#fff;box-shadow:0 5px 20px rgba(0,0,0,.09)}
.game-detail-media{width:420px;max-width:100%;display:flex;flex-direction:column;align-items:center;gap:18px}
.game-detail-cover{width:420px;height:420px;object-fit:cover;border:1px solid #ddd;background:#eee}
.game-detail-media .meta-under-cover{width:100%;min-height:92px}
.game-detail-media .meta-icon,.game-detail-media .vibration-icon{width:84px;height:84px;flex-basis:84px}
.game-detail-copy h1{font-size:42px;line-height:1.1;margin:6px 0 24px;color:var(--dreamcast-blue)}
.game-detail-description{font-size:18px;line-height:1.65}
.back-to-catalog{display:inline-block;margin-top:28px;padding:12px 16px;background:var(--blue);color:#fff;font-weight:700;border-radius:5px}
.game-pager{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;margin:24px 0 0}
.game-pager a{padding:14px 16px;background:#fff;border:1px solid #bfcbd7;color:var(--blue);font-weight:700;border-radius:5px}
.game-pager .pager-next{text-align:right}
.screenshots-block{width:100%;max-width:420px;margin:0}
.screenshots-title{font-size:20px;line-height:1.2;margin:0 0 10px;color:#222;text-align:left}
.screenshots-gallery{width:100%;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;overflow:visible}
.screenshot-thumb{min-width:0;padding:0;border:1px solid #b8c7d3;background:#edf4fa;border-radius:4px;cursor:pointer;overflow:hidden;aspect-ratio:4/3;position:relative;z-index:1;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.screenshot-thumb img{width:100%;height:100%;object-fit:cover}
.screenshot-thumb:hover,.screenshot-thumb:focus-visible{border-color:var(--blue);box-shadow:0 7px 20px rgba(0,0,0,.25);z-index:4}
.screenshot-thumb:focus-visible{outline:3px solid rgba(81,106,154,.28);outline-offset:2px}
.image-lightbox[hidden]{display:none}
.image-lightbox{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:24px;background:rgba(0,0,0,.86);cursor:zoom-out}
.lightbox-image{max-width:calc(100vw - 48px);max-height:calc(100vh - 48px);width:auto;height:auto;object-fit:contain;box-shadow:0 0 0 1px rgba(255,255,255,.24),0 16px 60px rgba(0,0,0,.55);cursor:default}
.lightbox-close{position:fixed;top:12px;right:18px;width:48px;height:48px;border:0;border-radius:50%;background:rgba(255,255,255,.94);color:#111;font-size:36px;line-height:1;cursor:pointer;z-index:1001}
@media(hover:hover) and (pointer:fine){
  .screenshot-thumb:hover{transform:scale(2.5)}
}
@media(max-width:980px){
  .head-in{align-items:flex-start;padding:18px 0;flex-direction:column}
  .nav{justify-content:flex-start}
  .nav a{border-left:0;border-right:1px solid #e5e5e5}
  .hero{grid-template-columns:1fr;padding-top:35px;text-align:center}
  .hero h1{font-size:48px}
  .console{max-width:700px;margin:auto}
  .foot-in{padding:25px 0;flex-direction:column;justify-content:center;text-align:center}
  .title-list{columns:1}
  .game-detail{grid-template-columns:320px minmax(0,1fr);gap:28px}
  .game-detail-media{width:320px}
  .game-detail-cover{width:320px;height:320px}
}
@media(max-width:720px){
  .shell{width:min(100% - 24px,1180px)}
  .content-shell{padding:1px 14px 30px}
  .brand span{display:none}
  .nav a{font-size:13px;padding:10px 8px}
  .hero{min-height:0;padding-left:18px;padding-right:18px}
  .hero h1{font-size:37px}
  .hero .count{font-size:22px}
  .page-title{font-size:35px}
  .alphabet{--alpha-size:clamp(2.65rem,10vw,3.6rem);grid-template-columns:repeat(auto-fit,minmax(var(--alpha-size),var(--alpha-size)));gap:0 .04rem;position:sticky;top:0}
  .alphabet a{width:var(--alpha-size);height:var(--alpha-size);min-width:var(--alpha-size);font-size:clamp(.72rem,2.4vw,.98rem);padding:clamp(.12rem,.3vw,.24rem)}
  .game-card-body{grid-template-columns:140px minmax(0,1fr);gap:15px;padding:15px}
  .game-cover{width:140px;height:140px}
  .meta-under-cover{width:140px;min-height:48px;gap:3px}
  .meta-icon,.vibration-icon{width:43px;height:43px;flex-basis:43px}
  .game-copy h2{font-size:19px}
  .game-description{font-size:14px}
  .game-detail{grid-template-columns:1fr;padding:18px}
  .game-detail-media{width:min(100%,420px);margin:auto}
  .game-detail-cover{width:min(100%,420px);height:auto;aspect-ratio:1/1}
  .game-detail-copy h1{font-size:32px}
  .game-detail-description{font-size:16px}
  .game-pager{grid-template-columns:1fr}
  .game-pager .pager-next{text-align:left}
  .screenshot-thumb{transition:border-color .16s ease,box-shadow .16s ease}
  .image-lightbox{padding:12px}
  .lightbox-image{max-width:calc(100vw - 24px);max-height:calc(100vh - 24px)}
}
@media(max-width:430px){
  .alphabet{--alpha-size:clamp(2.45rem,13vw,3.2rem);grid-template-columns:repeat(auto-fit,minmax(var(--alpha-size),var(--alpha-size)));gap:0 .03rem;position:sticky;top:0}
  .alphabet a{width:var(--alpha-size);height:var(--alpha-size);min-width:var(--alpha-size);font-size:clamp(.68rem,3vw,.9rem);padding:.14rem}
  .game-card-body{grid-template-columns:1fr}
  .game-media{align-items:center}
  .game-cover{width:min(100%,240px);height:auto;aspect-ratio:1/1}
  .meta-under-cover{width:min(100%,240px)}
  .game-copy h2{text-align:center}
}

@media(hover:hover) and (pointer:fine){
  .game-media{position:relative;z-index:1}
  .game-cover{transition:transform .18s ease,box-shadow .18s ease;transform-origin:center center}
}

/* Patch v13 */
.site-footer{display:none!important}

.alphabet{display:flex;flex-direction:column;align-items:center;gap:0!important;grid-template-columns:none!important;max-width:100%;overflow:hidden}
.alphabet-row{display:flex;justify-content:center;align-items:center;gap:.05rem;width:100%;max-width:100%}
.mobile-alphabet-toggle{display:none}

@media(max-width:720px){
  .site-header{position:relative}
  .head-in{position:relative;min-height:112px;display:block!important;padding:10px 0!important}
  .brand{position:absolute;left:0;top:12px}
  .brand img{width:82px}
  .brand span{display:none}
  .nav{position:absolute;right:0;top:8px;width:min(280px,calc(100% - 92px));display:grid!important;grid-template-columns:1fr 1fr;gap:3px;justify-content:stretch!important}
  .nav a{border:1px solid #e5e5e5!important;padding:7px 5px!important;text-align:center;font-size:11px!important;background:rgba(255,255,255,.95);line-height:1.2}

  .alphabet{position:static!important;padding:4px 0;margin-bottom:18px;width:100%;overflow:hidden}
  .alphabet-row{display:flex;justify-content:center;align-items:center;gap:0;width:100%;max-width:100%}
  .alphabet-row>a{flex:0 0 calc(100% / 6);max-width:calc(100% / 6)}
  .alphabet a{width:100%!important;height:auto!important;min-width:0!important;aspect-ratio:1/1;font-size:clamp(.68rem,2.6vw,.95rem)!important;padding:.12rem!important}
  .alphabet a[data-label-length="long"],.alphabet a:first-child{font-size:clamp(.48rem,1.9vw,.7rem)!important}

  .mobile-alphabet-toggle{position:fixed;top:14px;right:14px;z-index:80;width:58px;height:54px;border:1px solid rgba(81,106,154,.38);border-radius:13px;background:rgba(255,255,255,.92);box-shadow:0 5px 18px rgba(0,0,0,.18);cursor:pointer;padding:0}
  .mobile-alphabet-toggle.is-visible{display:block}
  .mobile-alphabet-toggle::before,.mobile-alphabet-toggle::after,.mobile-alphabet-toggle span{content:"";position:absolute;width:36px;height:36px;background:url("../images/section-disc.png") center/contain no-repeat;left:10px;top:8px}
  .mobile-alphabet-toggle::before{transform:translate(-5px,5px);opacity:.56}
  .mobile-alphabet-toggle span{transform:translate(0,0);opacity:.72}
  .mobile-alphabet-toggle::after{transform:translate(5px,-5px);opacity:.9}

  .alphabet.mobile-open{display:flex!important;position:fixed!important;top:72px;right:8px;left:8px;width:auto!important;z-index:75;max-height:calc(100vh - 88px);overflow:auto;padding:4px 0;background:transparent;border:0;border-radius:0;box-shadow:none;animation:alphabet-drop .22s ease-out both}
  .alphabet.mobile-open .alphabet-row{display:flex;justify-content:center;width:100%}
  .alphabet.mobile-open .alphabet-row>a{flex:0 0 calc(100% / 6);max-width:calc(100% / 6)}
  .alphabet.mobile-open a{width:100%!important;min-width:0!important;aspect-ratio:1/1}
  @keyframes alphabet-drop{from{transform:translateY(-28px);opacity:0}to{transform:translateY(0);opacity:1}}

  .game-card{height:auto!important}
  .game-card-body{grid-template-columns:1fr!important;gap:5px!important;padding:12px!important}
  .game-media{align-items:center;gap:4px!important}
  .game-copy{margin-top:0}
  .game-copy h2{margin-top:0;margin-bottom:7px}
  .game-description{line-height:1.35}
  .table-page .title-list{font-size:13px;line-height:1.35}
  .table-page .index-section h2{font-size:27px}
  .table-page .page-title{font-size:32px}
}
@media(max-width:430px){
  .game-cover{width:min(100%,210px)!important}
  .meta-under-cover{width:min(100%,210px)!important;min-height:42px!important}
  .meta-icon,.vibration-icon{width:40px!important;height:40px!important;flex-basis:40px!important}
}

/* Patch v15: scroll-to-top button */
.scroll-to-top{position:fixed;left:18px;bottom:18px;z-index:90;width:52px;height:52px;border:2px solid var(--dreamcast-eu-blue,#516a9a);border-radius:50%;background:rgba(255,255,255,.7);color:var(--dreamcast-eu-blue,#516a9a);display:grid;place-items:center;padding:0;cursor:pointer;opacity:.7;box-shadow:0 4px 14px rgba(0,0,0,.16);transition:opacity .18s ease,transform .18s ease;visibility:hidden;pointer-events:none}
.scroll-to-top.is-visible{visibility:visible;pointer-events:auto}
.scroll-to-top:hover,.scroll-to-top:focus-visible{opacity:1;transform:translateY(-2px)}
.scroll-to-top:focus-visible{outline:3px solid rgba(81,106,154,.28);outline-offset:3px}
.scroll-to-top::before{content:"";width:16px;height:16px;border-left:4px solid currentColor;border-top:4px solid currentColor;transform:rotate(45deg) translate(3px,3px);border-radius:2px}
@media(max-width:720px){.scroll-to-top{left:12px;bottom:12px;width:46px;height:46px}}


/* Patch v16: reliable visibility for scroll-to-top */
.scroll-to-top{display:flex!important;align-items:center;justify-content:center;opacity:.3!important;visibility:hidden!important;pointer-events:none!important}
.scroll-to-top.is-visible{visibility:visible!important;pointer-events:auto!important}
.scroll-to-top:hover,.scroll-to-top:focus-visible{opacity:1!important}


/* Patch v19: cyclic lightbox navigation */
.lightbox-nav{position:fixed;top:50%;z-index:1002;width:52px;height:52px;margin-top:-26px;border:2px solid var(--dreamcast-eu-blue,#516a9a);border-radius:50%;background:rgba(255,255,255,.7);color:var(--dreamcast-eu-blue,#516a9a);display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;opacity:.3;box-shadow:0 4px 14px rgba(0,0,0,.16);transition:opacity .18s ease,transform .18s ease}
.lightbox-nav:hover,.lightbox-nav:focus-visible{opacity:1}
.lightbox-nav:focus-visible{outline:3px solid rgba(81,106,154,.28);outline-offset:3px}
.lightbox-nav::before{content:"";width:16px;height:16px;border-left:4px solid currentColor;border-top:4px solid currentColor;border-radius:2px}
.lightbox-prev{left:18px}
.lightbox-prev::before{transform:rotate(-45deg) translate(2px,2px)}
.lightbox-next{right:18px}
.lightbox-next::before{transform:rotate(135deg) translate(2px,2px)}
.lightbox-prev:hover,.lightbox-prev:focus-visible{transform:translateX(-2px)}
.lightbox-next:hover,.lightbox-next:focus-visible{transform:translateX(2px)}
@media(max-width:720px){
  .lightbox-nav{width:46px;height:46px;margin-top:-23px}
  .lightbox-prev{left:10px}
  .lightbox-next{right:10px}
}


/* Progressive catalog cards and controls */
.game-copy h2{color:var(--dreamcast-blue)}
.game-card{position:relative}
.game-card-body{padding-bottom:78px}
.game-details-link{position:absolute;right:24px;bottom:20px;display:inline-flex;align-items:center;justify-content:center;min-height:42px;margin:0;padding:6px 0;color:var(--dreamcast-blue);font-size:16px;line-height:1;font-weight:800;text-decoration:none;border:0;background:transparent;z-index:2}
.game-details-link:hover,.game-details-link:focus-visible{color:#516a9a;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}
.game-details-link:focus-visible{outline:3px solid rgba(81,106,154,.28);outline-offset:5px;border-radius:4px}
.catalog-status{min-height:24px;margin:-12px 0 12px;color:#566675;font-size:14px;text-align:right}
.catalog-load-sentinel{height:4px;margin:0 0 24px;pointer-events:none}
.catalog-load-sentinel[hidden]{display:none}
.catalog-empty{padding:28px;border:1px solid #ccd6df;border-radius:10px;background:#fff;text-align:center;font-size:18px}
.catalog-search-section{margin-top:0}
@supports (content-visibility:auto){
  .catalog-section{content-visibility:auto;contain-intrinsic-size:950px}
}
@media (max-width:720px){
  .game-card-body{padding-bottom:66px!important}
  .game-details-link{right:14px;bottom:13px;min-height:38px;font-size:15px}
  .catalog-status{text-align:left;margin-top:-8px}
}
