<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://gf-ogas.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E5%BC%83%E6%9D%83%E8%80%85</id>
	<title>OGAS数据中枢 - 用户贡献 [zh]</title>
	<link rel="self" type="application/atom+xml" href="https://gf-ogas.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E5%BC%83%E6%9D%83%E8%80%85"/>
	<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/wiki/Special:Contributions/%E5%BC%83%E6%9D%83%E8%80%85"/>
	<updated>2026-07-02T08:09:47Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18939</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18939"/>
		<updated>2026-06-21T03:26:14Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
  padding: 0 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
  margin-top: .5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-cards {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );&lt;br /&gt;
  gap: 8px;&lt;br /&gt;
  padding: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card {&lt;br /&gt;
    border: 1px solid var(--color-progressive);&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    transition: background 0.2s;&lt;br /&gt;
    padding: .8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__img img {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__body {&lt;br /&gt;
  padding: 0.75rem 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--span2 {&lt;br /&gt;
  grid-column: span 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--span3 {&lt;br /&gt;
  grid-column: span 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--full {&lt;br /&gt;
  grid-column: 1 / -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  .gf-card--span2,&lt;br /&gt;
  .gf-card--span3 {&lt;br /&gt;
    grid-column: span 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18938</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18938"/>
		<updated>2026-06-20T15:34:01Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
  padding: 0 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
  margin-top: .5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-cards {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );&lt;br /&gt;
  gap: 8px;&lt;br /&gt;
  padding: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card {&lt;br /&gt;
    border: 1px solid var(--color-progressive);&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    transition: background 0.2s;&lt;br /&gt;
    padding: .8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__img img {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__body {&lt;br /&gt;
  padding: 0.75rem 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--span2 {&lt;br /&gt;
  grid-column: span 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--span3 {&lt;br /&gt;
  grid-column: span 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--full {&lt;br /&gt;
  grid-column: 1 / -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18937</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18937"/>
		<updated>2026-06-20T15:33:01Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf2-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf2-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfnc-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfnc-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfb-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfb-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;gf-hero-fade-bottom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-switcher-wrap&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&amp;lt;div id=&amp;quot;gf-tab-indicator&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;gf-cards&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card gf-card--span2&amp;quot;&amp;gt;少女前线双列卡片&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card  gf-card--span3&amp;quot;&amp;gt;少女前线三列卡片1&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;少女前线单列卡片2&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card  gf-card--full&amp;quot;&amp;gt;少女前线整行卡片3&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;gf-cards&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;追放&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;追放卡片1&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;追放卡片2&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;追放卡片3&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;gf-cards&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;云图&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;云图卡片1&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;云图卡片2&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;云图卡片3&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;gf-cards&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;面包房&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;面包房卡片1&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;面包房卡片2&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;面包房卡片3&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18936</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18936"/>
		<updated>2026-06-20T15:32:56Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
  padding: 0 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
  margin-top: .5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-cards {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );&lt;br /&gt;
  gap: 1rem;&lt;br /&gt;
  padding: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card {&lt;br /&gt;
    border: 1px solid var(--color-progressive);&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    transition: background 0.2s;&lt;br /&gt;
    padding: .8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__img img {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__body {&lt;br /&gt;
  padding: 0.75rem 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--span2 {&lt;br /&gt;
  grid-column: span 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--span3 {&lt;br /&gt;
  grid-column: span 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--full {&lt;br /&gt;
  grid-column: 1 / -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18935</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18935"/>
		<updated>2026-06-20T15:27:13Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
  padding: 0 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-cards {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );&lt;br /&gt;
  gap: 1rem;&lt;br /&gt;
  padding: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card {&lt;br /&gt;
    border: 1px solid var(--color-progressive);&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    transition: background 0.2s;&lt;br /&gt;
    padding: .8rem;&lt;br /&gt;
    margin: .5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__img img {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__body {&lt;br /&gt;
  padding: 0.75rem 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--span2 {&lt;br /&gt;
  grid-column: span 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--span3 {&lt;br /&gt;
  grid-column: span 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card--full {&lt;br /&gt;
  grid-column: 1 / -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18934</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18934"/>
		<updated>2026-06-20T15:24:27Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
  padding: 0 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-cards {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );&lt;br /&gt;
  gap: 1rem;&lt;br /&gt;
  padding: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card {&lt;br /&gt;
    border: 1px solid var(--color-progressive);&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    transition: background 0.2s;&lt;br /&gt;
    padding: .8rem;&lt;br /&gt;
    margin: .5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__img img {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__body {&lt;br /&gt;
  padding: 0.75rem 1rem;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18933</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18933"/>
		<updated>2026-06-20T15:23:40Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
少女前线系列多游戏首页切换Widget。调用方式：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GameSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getApiBase() {&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var m = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( m ) { return m[ 1 ] + &#039;/api.php&#039;; }&lt;br /&gt;
    }&lt;br /&gt;
    return window.location.origin + &#039;/api.php&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    fetch( getApiBase() + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GameSwitcher: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColor() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var el = document.getElementById( &#039;gf-hero-fade-bottom&#039; );&lt;br /&gt;
    if ( el ) {&lt;br /&gt;
      el.style.background = &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
function moveIndicator( tab ) {&lt;br /&gt;
  var indicator = document.getElementById( &#039;gf-tab-indicator&#039; );&lt;br /&gt;
  if ( !indicator ) { return; }&lt;br /&gt;
  indicator.style.width     = tab.offsetWidth + &#039;px&#039;;&lt;br /&gt;
  indicator.style.transform = &#039;translateX(&#039; + tab.offsetLeft + &#039;px)&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  var currentGame = &#039;gf&#039;;&lt;br /&gt;
  var switching   = false;&lt;br /&gt;
  var pending     = null;&lt;br /&gt;
&lt;br /&gt;
  function doSwitch( game, tabEl ) {&lt;br /&gt;
    var slides = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var panels = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
    var tabs   = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
&lt;br /&gt;
    var outSlide = document.getElementById( &#039;hero-&#039; + currentGame );&lt;br /&gt;
    var inSlide  = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      inSlide.style.zIndex = &#039;1&#039;;&lt;br /&gt;
      inSlide.classList.add( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
    if ( outSlide ) {&lt;br /&gt;
      outSlide.style.zIndex = &#039;0&#039;;&lt;br /&gt;
      outSlide.classList.remove( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
    if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
&lt;br /&gt;
    panels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    currentGame = game;&lt;br /&gt;
    switching   = true;&lt;br /&gt;
&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      slides.forEach( function ( s ) { s.style.zIndex = &#039;&#039;; } );&lt;br /&gt;
      switching = false;&lt;br /&gt;
      if ( pending &amp;amp;&amp;amp; pending.game !== currentGame ) {&lt;br /&gt;
        var p = pending;&lt;br /&gt;
        pending = null;&lt;br /&gt;
        doSwitch( p.game, p.tabEl );&lt;br /&gt;
      } else {&lt;br /&gt;
        pending = null;&lt;br /&gt;
      }&lt;br /&gt;
    }, 520 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game, tabEl ) {&lt;br /&gt;
    if ( game === currentGame ) { return; }&lt;br /&gt;
    if ( switching ) {&lt;br /&gt;
      pending = { game: game, tabEl: tabEl };&lt;br /&gt;
      var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
      tabs.forEach( function ( t ) {&lt;br /&gt;
        var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
        t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
        t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
      } );&lt;br /&gt;
      if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    doSwitch( game, tabEl );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var bg  = document.getElementById( &#039;hero-&#039; + game + &#039;-bg&#039; );&lt;br /&gt;
        var fg  = document.getElementById( &#039;hero-&#039; + game + &#039;-fg&#039; );&lt;br /&gt;
        var val = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;;&lt;br /&gt;
        if ( bg ) { bg.style.backgroundImage = val; }&lt;br /&gt;
        if ( fg ) { fg.style.backgroundImage = val; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColor();&lt;br /&gt;
&lt;br /&gt;
    var firstActive = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
    if ( firstActive ) {&lt;br /&gt;
      setTimeout( function () { moveIndicator( firstActive ); }, 50 );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener( &#039;resize&#039;, function () {&lt;br /&gt;
      var active = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
      if ( active ) { moveIndicator( active ); }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18932</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18932"/>
		<updated>2026-06-20T15:22:40Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
  padding: 0 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-cards {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );&lt;br /&gt;
  gap: 1rem;&lt;br /&gt;
  padding: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card {&lt;br /&gt;
    border: 1px solid var(--color-progressive);&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    transition: background 0.2s;&lt;br /&gt;
    padding: .8rem;&lt;br /&gt;
    margin: .5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__img img {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__body {&lt;br /&gt;
  padding: 0.75rem 1rem;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18931</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18931"/>
		<updated>2026-06-20T15:22:02Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​撤销弃权者（讨论）的修订版本18930&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
少女前线系列多游戏首页切换Widget。调用方式：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GameSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getApiBase() {&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var m = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( m ) { return m[ 1 ] + &#039;/api.php&#039;; }&lt;br /&gt;
    }&lt;br /&gt;
    return window.location.origin + &#039;/api.php&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    fetch( getApiBase() + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GameSwitcher: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColor() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var el = document.getElementById( &#039;gf-hero-fade-bottom&#039; );&lt;br /&gt;
    if ( el ) {&lt;br /&gt;
      el.style.background = &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
function moveIndicator( tab ) {&lt;br /&gt;
  var indicator = document.getElementById( &#039;gf-tab-indicator&#039; );&lt;br /&gt;
  var switcher  = document.getElementById( &#039;gf-switcher&#039; );&lt;br /&gt;
  if ( !indicator || !switcher ) { return; }&lt;br /&gt;
  /* 让switcher作为定位基准 */&lt;br /&gt;
  var switcherLeft = switcher.getBoundingClientRect().left;&lt;br /&gt;
  var tabLeft      = tab.getBoundingClientRect().left;&lt;br /&gt;
  indicator.style.width     = tab.offsetWidth + &#039;px&#039;;&lt;br /&gt;
  indicator.style.transform = &#039;translateX(&#039; + ( tabLeft - switcherLeft ) + &#039;px)&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  var currentGame = &#039;gf&#039;;&lt;br /&gt;
  var switching   = false;&lt;br /&gt;
  var pending     = null;&lt;br /&gt;
&lt;br /&gt;
  function doSwitch( game, tabEl ) {&lt;br /&gt;
    var slides = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var panels = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
    var tabs   = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
&lt;br /&gt;
    var outSlide = document.getElementById( &#039;hero-&#039; + currentGame );&lt;br /&gt;
    var inSlide  = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      inSlide.style.zIndex = &#039;1&#039;;&lt;br /&gt;
      inSlide.classList.add( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
    if ( outSlide ) {&lt;br /&gt;
      outSlide.style.zIndex = &#039;0&#039;;&lt;br /&gt;
      outSlide.classList.remove( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
    if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
&lt;br /&gt;
    panels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    currentGame = game;&lt;br /&gt;
    switching   = true;&lt;br /&gt;
&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      slides.forEach( function ( s ) { s.style.zIndex = &#039;&#039;; } );&lt;br /&gt;
      switching = false;&lt;br /&gt;
      if ( pending &amp;amp;&amp;amp; pending.game !== currentGame ) {&lt;br /&gt;
        var p = pending;&lt;br /&gt;
        pending = null;&lt;br /&gt;
        doSwitch( p.game, p.tabEl );&lt;br /&gt;
      } else {&lt;br /&gt;
        pending = null;&lt;br /&gt;
      }&lt;br /&gt;
    }, 520 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game, tabEl ) {&lt;br /&gt;
    if ( game === currentGame ) { return; }&lt;br /&gt;
    if ( switching ) {&lt;br /&gt;
      pending = { game: game, tabEl: tabEl };&lt;br /&gt;
      var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
      tabs.forEach( function ( t ) {&lt;br /&gt;
        var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
        t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
        t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
      } );&lt;br /&gt;
      if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    doSwitch( game, tabEl );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var bg  = document.getElementById( &#039;hero-&#039; + game + &#039;-bg&#039; );&lt;br /&gt;
        var fg  = document.getElementById( &#039;hero-&#039; + game + &#039;-fg&#039; );&lt;br /&gt;
        var val = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;;&lt;br /&gt;
        if ( bg ) { bg.style.backgroundImage = val; }&lt;br /&gt;
        if ( fg ) { fg.style.backgroundImage = val; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColor();&lt;br /&gt;
&lt;br /&gt;
    var firstActive = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
    if ( firstActive ) {&lt;br /&gt;
      setTimeout( function () { moveIndicator( firstActive ); }, 50 );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener( &#039;resize&#039;, function () {&lt;br /&gt;
      var active = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
      if ( active ) { moveIndicator( active ); }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18930</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18930"/>
		<updated>2026-06-20T15:18:18Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
少女前线系列多游戏首页切换Widget。调用方式：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GameSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getApiBase() {&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var m = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( m ) { return m[ 1 ] + &#039;/api.php&#039;; }&lt;br /&gt;
    }&lt;br /&gt;
    return window.location.origin + &#039;/api.php&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    fetch( getApiBase() + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GameSwitcher: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColor() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var el = document.getElementById( &#039;gf-hero-fade-bottom&#039; );&lt;br /&gt;
    if ( el ) {&lt;br /&gt;
      el.style.background = &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
function moveIndicator( tab ) {&lt;br /&gt;
  var indicator = document.getElementById( &#039;gf-tab-indicator&#039; );&lt;br /&gt;
  var switcher  = document.getElementById( &#039;gf-switcher&#039; );&lt;br /&gt;
  if ( !indicator || !switcher ) { return; }&lt;br /&gt;
  /* 让switcher作为定位基准 */&lt;br /&gt;
  var switcherLeft = switcher.getBoundingClientRect().left;&lt;br /&gt;
  var tabLeft      = tab.getBoundingClientRect().left;&lt;br /&gt;
  indicator.style.width     = tab.offsetWidth + &#039;px&#039;;&lt;br /&gt;
  indicator.style.transform = &#039;translateX(&#039; + ( tabLeft - switcherLeft ) + &#039;px)&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  var currentGame = &#039;gf&#039;;&lt;br /&gt;
  var switching   = false;&lt;br /&gt;
  var pending     = null;&lt;br /&gt;
&lt;br /&gt;
  function doSwitch( game, tabEl ) {&lt;br /&gt;
    var slides = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var panels = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
    var tabs   = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
&lt;br /&gt;
    var outSlide = document.getElementById( &#039;hero-&#039; + currentGame );&lt;br /&gt;
    var inSlide  = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      inSlide.style.zIndex = &#039;1&#039;;&lt;br /&gt;
      inSlide.classList.add( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
    if ( outSlide ) {&lt;br /&gt;
      outSlide.style.zIndex = &#039;0&#039;;&lt;br /&gt;
      outSlide.classList.remove( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
    if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
&lt;br /&gt;
    panels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    currentGame = game;&lt;br /&gt;
    switching   = true;&lt;br /&gt;
&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      slides.forEach( function ( s ) { s.style.zIndex = &#039;&#039;; } );&lt;br /&gt;
      switching = false;&lt;br /&gt;
      if ( pending &amp;amp;&amp;amp; pending.game !== currentGame ) {&lt;br /&gt;
        var p = pending;&lt;br /&gt;
        pending = null;&lt;br /&gt;
        doSwitch( p.game, p.tabEl );&lt;br /&gt;
      } else {&lt;br /&gt;
        pending = null;&lt;br /&gt;
      }&lt;br /&gt;
    }, 520 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game, tabEl ) {&lt;br /&gt;
    if ( game === currentGame ) { return; }&lt;br /&gt;
    if ( switching ) {&lt;br /&gt;
      pending = { game: game, tabEl: tabEl };&lt;br /&gt;
      var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
      tabs.forEach( function ( t ) {&lt;br /&gt;
        var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
        t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
        t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
      } );&lt;br /&gt;
      if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    doSwitch( game, tabEl );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var bg  = document.getElementById( &#039;hero-&#039; + game + &#039;-bg&#039; );&lt;br /&gt;
        var fg  = document.getElementById( &#039;hero-&#039; + game + &#039;-fg&#039; );&lt;br /&gt;
        var val = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;;&lt;br /&gt;
        if ( bg ) { bg.style.backgroundImage = val; }&lt;br /&gt;
        if ( fg ) { fg.style.backgroundImage = val; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColor();&lt;br /&gt;
&lt;br /&gt;
//    var firstActive = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
//    if ( firstActive ) {&lt;br /&gt;
//      setTimeout( function () { moveIndicator( firstActive ); }, 50 );&lt;br /&gt;
//    }&lt;br /&gt;
&lt;br /&gt;
var firstActive = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
if ( firstActive ) {&lt;br /&gt;
  setTimeout( function () {&lt;br /&gt;
    var switcher = document.getElementById( &#039;gf-switcher&#039; );&lt;br /&gt;
    var sr = switcher.getBoundingClientRect();&lt;br /&gt;
    var tr = firstActive.getBoundingClientRect();&lt;br /&gt;
    console.log( &#039;switcher left:&#039;, sr.left );&lt;br /&gt;
    console.log( &#039;tab left:&#039;, tr.left );&lt;br /&gt;
    console.log( &#039;tab width:&#039;, firstActive.offsetWidth );&lt;br /&gt;
    console.log( &#039;calculated offset:&#039;, tr.left - sr.left );&lt;br /&gt;
    console.log( &#039;indicator:&#039;, document.getElementById( &#039;gf-tab-indicator&#039; ) );&lt;br /&gt;
    moveIndicator( firstActive );&lt;br /&gt;
  }, 50 );&lt;br /&gt;
}&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener( &#039;resize&#039;, function () {&lt;br /&gt;
      var active = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
      if ( active ) { moveIndicator( active ); }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18929</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18929"/>
		<updated>2026-06-20T15:16:17Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
少女前线系列多游戏首页切换Widget。调用方式：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GameSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getApiBase() {&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var m = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( m ) { return m[ 1 ] + &#039;/api.php&#039;; }&lt;br /&gt;
    }&lt;br /&gt;
    return window.location.origin + &#039;/api.php&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    fetch( getApiBase() + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GameSwitcher: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColor() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var el = document.getElementById( &#039;gf-hero-fade-bottom&#039; );&lt;br /&gt;
    if ( el ) {&lt;br /&gt;
      el.style.background = &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
function moveIndicator( tab ) {&lt;br /&gt;
  var indicator = document.getElementById( &#039;gf-tab-indicator&#039; );&lt;br /&gt;
  var switcher  = document.getElementById( &#039;gf-switcher&#039; );&lt;br /&gt;
  if ( !indicator || !switcher ) { return; }&lt;br /&gt;
  /* 让switcher作为定位基准 */&lt;br /&gt;
  var switcherLeft = switcher.getBoundingClientRect().left;&lt;br /&gt;
  var tabLeft      = tab.getBoundingClientRect().left;&lt;br /&gt;
  indicator.style.width     = tab.offsetWidth + &#039;px&#039;;&lt;br /&gt;
  indicator.style.transform = &#039;translateX(&#039; + ( tabLeft - switcherLeft ) + &#039;px)&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  var currentGame = &#039;gf&#039;;&lt;br /&gt;
  var switching   = false;&lt;br /&gt;
  var pending     = null;&lt;br /&gt;
&lt;br /&gt;
  function doSwitch( game, tabEl ) {&lt;br /&gt;
    var slides = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var panels = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
    var tabs   = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
&lt;br /&gt;
    var outSlide = document.getElementById( &#039;hero-&#039; + currentGame );&lt;br /&gt;
    var inSlide  = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      inSlide.style.zIndex = &#039;1&#039;;&lt;br /&gt;
      inSlide.classList.add( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
    if ( outSlide ) {&lt;br /&gt;
      outSlide.style.zIndex = &#039;0&#039;;&lt;br /&gt;
      outSlide.classList.remove( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
    if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
&lt;br /&gt;
    panels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    currentGame = game;&lt;br /&gt;
    switching   = true;&lt;br /&gt;
&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      slides.forEach( function ( s ) { s.style.zIndex = &#039;&#039;; } );&lt;br /&gt;
      switching = false;&lt;br /&gt;
      if ( pending &amp;amp;&amp;amp; pending.game !== currentGame ) {&lt;br /&gt;
        var p = pending;&lt;br /&gt;
        pending = null;&lt;br /&gt;
        doSwitch( p.game, p.tabEl );&lt;br /&gt;
      } else {&lt;br /&gt;
        pending = null;&lt;br /&gt;
      }&lt;br /&gt;
    }, 520 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game, tabEl ) {&lt;br /&gt;
    if ( game === currentGame ) { return; }&lt;br /&gt;
    if ( switching ) {&lt;br /&gt;
      pending = { game: game, tabEl: tabEl };&lt;br /&gt;
      var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
      tabs.forEach( function ( t ) {&lt;br /&gt;
        var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
        t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
        t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
      } );&lt;br /&gt;
      if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    doSwitch( game, tabEl );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var bg  = document.getElementById( &#039;hero-&#039; + game + &#039;-bg&#039; );&lt;br /&gt;
        var fg  = document.getElementById( &#039;hero-&#039; + game + &#039;-fg&#039; );&lt;br /&gt;
        var val = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;;&lt;br /&gt;
        if ( bg ) { bg.style.backgroundImage = val; }&lt;br /&gt;
        if ( fg ) { fg.style.backgroundImage = val; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColor();&lt;br /&gt;
&lt;br /&gt;
    var firstActive = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
    if ( firstActive ) {&lt;br /&gt;
      setTimeout( function () { moveIndicator( firstActive ); }, 50 );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener( &#039;resize&#039;, function () {&lt;br /&gt;
      var active = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
      if ( active ) { moveIndicator( active ); }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18928</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18928"/>
		<updated>2026-06-20T15:14:26Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf2-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf2-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfnc-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfnc-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfb-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfb-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;gf-hero-fade-bottom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-switcher-wrap&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&amp;lt;div id=&amp;quot;gf-tab-indicator&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;gf-cards&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;少女前线&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;少女前线卡片1&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;少女前线卡片2&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;少女前线卡片3&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;gf-cards&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;追放&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;追放卡片1&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;追放卡片2&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;追放卡片3&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;gf-cards&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;云图&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;云图卡片1&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;云图卡片2&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;云图卡片3&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;gf-cards&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;面包房&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;面包房卡片1&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;面包房卡片2&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;gf-card&amp;quot;&amp;gt;面包房卡片3&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18927</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18927"/>
		<updated>2026-06-20T15:14:21Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 4px;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-cards {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );&lt;br /&gt;
  gap: 1rem;&lt;br /&gt;
  padding: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card {&lt;br /&gt;
    border: 1px solid var(--color-progressive);&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    transition: background 0.2s;&lt;br /&gt;
    padding: .8rem;&lt;br /&gt;
    margin: .5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__img img {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__body {&lt;br /&gt;
  padding: 0.75rem 1rem;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18926</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18926"/>
		<updated>2026-06-20T15:07:56Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 4px;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-cards {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );&lt;br /&gt;
  gap: 1rem;&lt;br /&gt;
  padding: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-cards {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );&lt;br /&gt;
  gap: 1rem;&lt;br /&gt;
  padding: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card {&lt;br /&gt;
  border: var(--border-color-base);&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
  transition: background 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__img img {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__body {&lt;br /&gt;
  padding: 0.75rem 1rem;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18925</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18925"/>
		<updated>2026-06-20T14:57:45Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 4px;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-cards {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );&lt;br /&gt;
  gap: 1rem;&lt;br /&gt;
  padding: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card {&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
  background: rgba( 255, 255, 255, 0.04 );&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
  transition: background 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card:hover {&lt;br /&gt;
  background: rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__img img {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-card__body {&lt;br /&gt;
  padding: 0.75rem 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18924</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18924"/>
		<updated>2026-06-20T14:34:20Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 4px;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18923</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18923"/>
		<updated>2026-06-20T14:33:14Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
少女前线系列多游戏首页切换Widget。调用方式：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GameSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getApiBase() {&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var m = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( m ) { return m[ 1 ] + &#039;/api.php&#039;; }&lt;br /&gt;
    }&lt;br /&gt;
    return window.location.origin + &#039;/api.php&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    fetch( getApiBase() + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GameSwitcher: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColor() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var el = document.getElementById( &#039;gf-hero-fade-bottom&#039; );&lt;br /&gt;
    if ( el ) {&lt;br /&gt;
      el.style.background = &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
function moveIndicator( tab ) {&lt;br /&gt;
  var indicator = document.getElementById( &#039;gf-tab-indicator&#039; );&lt;br /&gt;
  if ( !indicator ) { return; }&lt;br /&gt;
  indicator.style.width     = tab.offsetWidth + &#039;px&#039;;&lt;br /&gt;
  indicator.style.transform = &#039;translateX(&#039; + tab.offsetLeft + &#039;px)&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  var currentGame = &#039;gf&#039;;&lt;br /&gt;
  var switching   = false;&lt;br /&gt;
  var pending     = null;&lt;br /&gt;
&lt;br /&gt;
  function doSwitch( game, tabEl ) {&lt;br /&gt;
    var slides = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var panels = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
    var tabs   = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
&lt;br /&gt;
    var outSlide = document.getElementById( &#039;hero-&#039; + currentGame );&lt;br /&gt;
    var inSlide  = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      inSlide.style.zIndex = &#039;1&#039;;&lt;br /&gt;
      inSlide.classList.add( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
    if ( outSlide ) {&lt;br /&gt;
      outSlide.style.zIndex = &#039;0&#039;;&lt;br /&gt;
      outSlide.classList.remove( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
    if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
&lt;br /&gt;
    panels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    currentGame = game;&lt;br /&gt;
    switching   = true;&lt;br /&gt;
&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      slides.forEach( function ( s ) { s.style.zIndex = &#039;&#039;; } );&lt;br /&gt;
      switching = false;&lt;br /&gt;
      if ( pending &amp;amp;&amp;amp; pending.game !== currentGame ) {&lt;br /&gt;
        var p = pending;&lt;br /&gt;
        pending = null;&lt;br /&gt;
        doSwitch( p.game, p.tabEl );&lt;br /&gt;
      } else {&lt;br /&gt;
        pending = null;&lt;br /&gt;
      }&lt;br /&gt;
    }, 520 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game, tabEl ) {&lt;br /&gt;
    if ( game === currentGame ) { return; }&lt;br /&gt;
    if ( switching ) {&lt;br /&gt;
      pending = { game: game, tabEl: tabEl };&lt;br /&gt;
      var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
      tabs.forEach( function ( t ) {&lt;br /&gt;
        var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
        t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
        t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
      } );&lt;br /&gt;
      if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    doSwitch( game, tabEl );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var bg  = document.getElementById( &#039;hero-&#039; + game + &#039;-bg&#039; );&lt;br /&gt;
        var fg  = document.getElementById( &#039;hero-&#039; + game + &#039;-fg&#039; );&lt;br /&gt;
        var val = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;;&lt;br /&gt;
        if ( bg ) { bg.style.backgroundImage = val; }&lt;br /&gt;
        if ( fg ) { fg.style.backgroundImage = val; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColor();&lt;br /&gt;
&lt;br /&gt;
    var firstActive = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
    if ( firstActive ) {&lt;br /&gt;
      setTimeout( function () { moveIndicator( firstActive ); }, 50 );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener( &#039;resize&#039;, function () {&lt;br /&gt;
      var active = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
      if ( active ) { moveIndicator( active ); }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18922</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18922"/>
		<updated>2026-06-20T14:26:13Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  padding: 4px;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 4px;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: var(--color-progressive);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18921</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18921"/>
		<updated>2026-06-20T14:23:39Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
少女前线系列多游戏首页切换Widget。调用方式：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GameSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getApiBase() {&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var m = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( m ) { return m[ 1 ] + &#039;/api.php&#039;; }&lt;br /&gt;
    }&lt;br /&gt;
    return window.location.origin + &#039;/api.php&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    fetch( getApiBase() + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GameSwitcher: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColor() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var el = document.getElementById( &#039;gf-hero-fade-bottom&#039; );&lt;br /&gt;
    if ( el ) {&lt;br /&gt;
      el.style.background = &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function moveIndicator( tab ) {&lt;br /&gt;
    var indicator = document.getElementById( &#039;gf-tab-indicator&#039; );&lt;br /&gt;
    var switcher  = document.getElementById( &#039;gf-switcher&#039; );&lt;br /&gt;
    if ( !indicator || !switcher ) { return; }&lt;br /&gt;
    var sr = switcher.getBoundingClientRect();&lt;br /&gt;
    var tr = tab.getBoundingClientRect();&lt;br /&gt;
    indicator.style.width     = tr.width + &#039;px&#039;;&lt;br /&gt;
    indicator.style.transform = &#039;translateX(&#039; + ( tr.left - sr.left ) + &#039;px)&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  var currentGame = &#039;gf&#039;;&lt;br /&gt;
  var switching   = false;&lt;br /&gt;
  var pending     = null;&lt;br /&gt;
&lt;br /&gt;
  function doSwitch( game, tabEl ) {&lt;br /&gt;
    var slides = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var panels = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
    var tabs   = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
&lt;br /&gt;
    var outSlide = document.getElementById( &#039;hero-&#039; + currentGame );&lt;br /&gt;
    var inSlide  = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      inSlide.style.zIndex = &#039;1&#039;;&lt;br /&gt;
      inSlide.classList.add( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
    if ( outSlide ) {&lt;br /&gt;
      outSlide.style.zIndex = &#039;0&#039;;&lt;br /&gt;
      outSlide.classList.remove( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
    if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
&lt;br /&gt;
    panels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    currentGame = game;&lt;br /&gt;
    switching   = true;&lt;br /&gt;
&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      slides.forEach( function ( s ) { s.style.zIndex = &#039;&#039;; } );&lt;br /&gt;
      switching = false;&lt;br /&gt;
      if ( pending &amp;amp;&amp;amp; pending.game !== currentGame ) {&lt;br /&gt;
        var p = pending;&lt;br /&gt;
        pending = null;&lt;br /&gt;
        doSwitch( p.game, p.tabEl );&lt;br /&gt;
      } else {&lt;br /&gt;
        pending = null;&lt;br /&gt;
      }&lt;br /&gt;
    }, 520 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game, tabEl ) {&lt;br /&gt;
    if ( game === currentGame ) { return; }&lt;br /&gt;
    if ( switching ) {&lt;br /&gt;
      pending = { game: game, tabEl: tabEl };&lt;br /&gt;
      var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
      tabs.forEach( function ( t ) {&lt;br /&gt;
        var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
        t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
        t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
      } );&lt;br /&gt;
      if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    doSwitch( game, tabEl );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var bg  = document.getElementById( &#039;hero-&#039; + game + &#039;-bg&#039; );&lt;br /&gt;
        var fg  = document.getElementById( &#039;hero-&#039; + game + &#039;-fg&#039; );&lt;br /&gt;
        var val = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;;&lt;br /&gt;
        if ( bg ) { bg.style.backgroundImage = val; }&lt;br /&gt;
        if ( fg ) { fg.style.backgroundImage = val; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColor();&lt;br /&gt;
&lt;br /&gt;
    var firstActive = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
    if ( firstActive ) {&lt;br /&gt;
      setTimeout( function () { moveIndicator( firstActive ); }, 50 );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener( &#039;resize&#039;, function () {&lt;br /&gt;
      var active = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
      if ( active ) { moveIndicator( active ); }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18920</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18920"/>
		<updated>2026-06-20T14:23:29Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  padding: 4px;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 4px;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 2px rgba( 61, 120, 196, 0.5 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18919</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18919"/>
		<updated>2026-06-20T14:21:15Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.7s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
  transition: transform 8s ease-out;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: calc( 50% - 600px );&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
    transition: transform 8s ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  padding: 4px;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 4px;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 2px rgba( 61, 120, 196, 0.5 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18918</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18918"/>
		<updated>2026-06-20T14:19:33Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.7s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* fg默认不加transform，由JS在init时设置初始缩放状态 */&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
  transition: transform 8s ease-out;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
    transition: transform 8s ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  padding: 4px;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 4px;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 2px rgba( 61, 120, 196, 0.5 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18917</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18917"/>
		<updated>2026-06-20T14:15:59Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
本Widget为少女前线系列多游戏首页提供切换交互逻辑。&lt;br /&gt;
不接受参数，直接在首页调用：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GFHomepageSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getApiBase() {&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var m = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( m ) { return m[ 1 ] + &#039;/api.php&#039;; }&lt;br /&gt;
    }&lt;br /&gt;
    return window.location.origin + &#039;/api.php&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    fetch( getApiBase() + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GameSwitcher: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColor() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var el = document.getElementById( &#039;gf-hero-fade-bottom&#039; );&lt;br /&gt;
    if ( el ) {&lt;br /&gt;
      el.style.background = &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function moveIndicator( tab ) {&lt;br /&gt;
    var indicator = document.getElementById( &#039;gf-tab-indicator&#039; );&lt;br /&gt;
    var switcher  = document.getElementById( &#039;gf-switcher&#039; );&lt;br /&gt;
    if ( !indicator || !switcher ) { return; }&lt;br /&gt;
    var sr = switcher.getBoundingClientRect();&lt;br /&gt;
    var tr = tab.getBoundingClientRect();&lt;br /&gt;
    indicator.style.width     = tr.width + &#039;px&#039;;&lt;br /&gt;
    indicator.style.transform = &#039;translateX(&#039; + ( tr.left - sr.left ) + &#039;px)&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  var currentGame = &#039;gf&#039;;&lt;br /&gt;
  var switching   = false;&lt;br /&gt;
  var pending     = null; /* { game, tabEl } */&lt;br /&gt;
&lt;br /&gt;
  function doSwitch( game, tabEl ) {&lt;br /&gt;
    var slides = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var panels = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
    var tabs   = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
&lt;br /&gt;
    var outSlide = document.getElementById( &#039;hero-&#039; + currentGame );&lt;br /&gt;
    var inSlide  = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
&lt;br /&gt;
    /* Ken Burns重置 */&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      var inFg = inSlide.querySelector( &#039;.gf-hero-fg&#039; );&lt;br /&gt;
      if ( inFg ) {&lt;br /&gt;
        inFg.style.transition = &#039;none&#039;;&lt;br /&gt;
        inFg.style.transform  = window.innerWidth &amp;gt; 1200&lt;br /&gt;
          ? &#039;translateX(-50%) scale(1.06)&#039;&lt;br /&gt;
          : &#039;scale(1.06)&#039;;&lt;br /&gt;
        void inFg.offsetWidth;&lt;br /&gt;
        inFg.style.transition = &#039;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* 交叉淡入淡出 */&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      inSlide.style.zIndex = &#039;1&#039;;&lt;br /&gt;
      inSlide.classList.add( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
    if ( outSlide ) {&lt;br /&gt;
      outSlide.style.zIndex = &#039;0&#039;;&lt;br /&gt;
      outSlide.classList.remove( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab与指示器立即响应，不等动画 */&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
    if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
&lt;br /&gt;
    /* 内容面板立即切换 */&lt;br /&gt;
    panels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    currentGame = game;&lt;br /&gt;
    switching   = true;&lt;br /&gt;
&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      slides.forEach( function ( s ) { s.style.zIndex = &#039;&#039;; } );&lt;br /&gt;
      switching = false;&lt;br /&gt;
&lt;br /&gt;
      /* 动画结束后执行期间积压的最后一次请求 */&lt;br /&gt;
      if ( pending &amp;amp;&amp;amp; pending.game !== currentGame ) {&lt;br /&gt;
        var p = pending;&lt;br /&gt;
        pending = null;&lt;br /&gt;
        doSwitch( p.game, p.tabEl );&lt;br /&gt;
      } else {&lt;br /&gt;
        pending = null;&lt;br /&gt;
      }&lt;br /&gt;
    }, 720 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game, tabEl ) {&lt;br /&gt;
    if ( game === currentGame ) { return; }&lt;br /&gt;
    if ( switching ) {&lt;br /&gt;
      /* 记录最新目标，覆盖之前积压的 */&lt;br /&gt;
      pending = { game: game, tabEl: tabEl };&lt;br /&gt;
      /* 指示器和tab状态立即跟手 */&lt;br /&gt;
      var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
      tabs.forEach( function ( t ) {&lt;br /&gt;
        var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
        t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
        t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
      } );&lt;br /&gt;
      if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    doSwitch( game, tabEl );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var bg  = document.getElementById( &#039;hero-&#039; + game + &#039;-bg&#039; );&lt;br /&gt;
        var fg  = document.getElementById( &#039;hero-&#039; + game + &#039;-fg&#039; );&lt;br /&gt;
        var val = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;;&lt;br /&gt;
        if ( bg ) { bg.style.backgroundImage = val; }&lt;br /&gt;
        if ( fg ) { fg.style.backgroundImage = val; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColor();&lt;br /&gt;
&lt;br /&gt;
    var firstActive = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
    if ( firstActive ) {&lt;br /&gt;
      setTimeout( function () { moveIndicator( firstActive ); }, 50 );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    window.addEventListener( &#039;resize&#039;, function () {&lt;br /&gt;
      var active = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
      if ( active ) { moveIndicator( active ); }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18916</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18916"/>
		<updated>2026-06-20T14:14:02Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
本Widget为少女前线系列多游戏首页提供切换交互逻辑。&lt;br /&gt;
不接受参数，直接在首页调用：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GFHomepageSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getApiBase() {&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var m = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( m ) { return m[ 1 ] + &#039;/api.php&#039;; }&lt;br /&gt;
    }&lt;br /&gt;
    return window.location.origin + &#039;/api.php&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    fetch( getApiBase() + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GameSwitcher: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColor() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var el = document.getElementById( &#039;gf-hero-fade-bottom&#039; );&lt;br /&gt;
    if ( el ) {&lt;br /&gt;
      el.style.background = &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* 滑动指示器：根据当前active tab的位置和宽度移动 */&lt;br /&gt;
  function moveIndicator( tab ) {&lt;br /&gt;
    var indicator = document.getElementById( &#039;gf-tab-indicator&#039; );&lt;br /&gt;
    var switcher = document.getElementById( &#039;gf-switcher&#039; );&lt;br /&gt;
    if ( !indicator || !switcher ) { return; }&lt;br /&gt;
    var switcherRect = switcher.getBoundingClientRect();&lt;br /&gt;
    var tabRect = tab.getBoundingClientRect();&lt;br /&gt;
    indicator.style.width = tabRect.width + &#039;px&#039;;&lt;br /&gt;
    indicator.style.transform = &#039;translateX(&#039; + ( tabRect.left - switcherRect.left ) + &#039;px)&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  var currentGame = &#039;gf&#039;;&lt;br /&gt;
  var switching = false;&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game, tabEl ) {&lt;br /&gt;
    if ( game === currentGame || switching ) { return; }&lt;br /&gt;
    switching = true;&lt;br /&gt;
&lt;br /&gt;
    var slides = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var panels = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
    var tabs   = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
&lt;br /&gt;
    var outSlide = document.getElementById( &#039;hero-&#039; + currentGame );&lt;br /&gt;
    var inSlide  = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
&lt;br /&gt;
    /* 先把新slide的fg重置为缩放状态，让Ken Burns重新触发 */&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      var inFg = inSlide.querySelector( &#039;.gf-hero-fg&#039; );&lt;br /&gt;
      if ( inFg ) {&lt;br /&gt;
        inFg.style.transition = &#039;none&#039;;&lt;br /&gt;
        inFg.style.transform = window.innerWidth &amp;gt; 1200&lt;br /&gt;
          ? &#039;translateX(-50%) scale(1.06)&#039;&lt;br /&gt;
          : &#039;scale(1.06)&#039;;&lt;br /&gt;
        void inFg.offsetWidth;&lt;br /&gt;
        inFg.style.transition = &#039;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* 交叉淡入淡出 */&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      inSlide.style.zIndex = &#039;1&#039;;&lt;br /&gt;
      inSlide.classList.add( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
    if ( outSlide ) {&lt;br /&gt;
      outSlide.style.zIndex = &#039;0&#039;;&lt;br /&gt;
      outSlide.classList.remove( &#039;active&#039; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab状态 */&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    /* 滑动指示器 */&lt;br /&gt;
    if ( tabEl ) { moveIndicator( tabEl ); }&lt;br /&gt;
&lt;br /&gt;
    /* 内容面板 */&lt;br /&gt;
    panels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      slides.forEach( function ( s ) {&lt;br /&gt;
        s.style.zIndex = &#039;&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      currentGame = game;&lt;br /&gt;
      switching = false;&lt;br /&gt;
    }, 720 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    /* 注入背景图 */&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var bg = document.getElementById( &#039;hero-&#039; + game + &#039;-bg&#039; );&lt;br /&gt;
        var fg = document.getElementById( &#039;hero-&#039; + game + &#039;-fg&#039; );&lt;br /&gt;
        var val = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;;&lt;br /&gt;
        if ( bg ) { bg.style.backgroundImage = val; }&lt;br /&gt;
        if ( fg ) { fg.style.backgroundImage = val; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColor();&lt;br /&gt;
&lt;br /&gt;
    /* 初始化指示器位置 */&lt;br /&gt;
    var firstActive = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
    if ( firstActive ) {&lt;br /&gt;
      /* 等布局稳定后再计算 */&lt;br /&gt;
      setTimeout( function () { moveIndicator( firstActive ); }, 50 );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ), this );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    /* 窗口resize时重新定位指示器 */&lt;br /&gt;
    window.addEventListener( &#039;resize&#039;, function () {&lt;br /&gt;
      var active = document.querySelector( &#039;#gf-homepage .gf-tab.active&#039; );&lt;br /&gt;
      if ( active ) { moveIndicator( active ); }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18915</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18915"/>
		<updated>2026-06-20T14:12:33Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 头图容器 ── */&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── slide层 ── */&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.7s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 模糊背景层（仅超过1200px时显示） ── */&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 清晰前景层 ── */&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
  /* Ken Burns：缓慢放大 */&lt;br /&gt;
  transform: scale( 1.06 );&lt;br /&gt;
  transition: transform 8s ease-out, opacity 0.7s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active .gf-hero-fg {&lt;br /&gt;
  transform: scale( 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.08 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    transform: translateX( -50% ) scale( 1.06 );&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
    transition: transform 8s ease-out, opacity 0.7s ease;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-slide.active .gf-hero-fg {&lt;br /&gt;
    transform: translateX( -50% ) scale( 1 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 底部渐变遮罩 ── */&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  height: 120px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 导航外层（定位到Banner底部） ── */&lt;br /&gt;
#gf-switcher-wrap {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 16px;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  z-index: 20;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── Segmented Control整体 ── */&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-flex;&lt;br /&gt;
  padding: 4px;&lt;br /&gt;
  background: rgba( 20, 22, 26, 0.82 );&lt;br /&gt;
  border-radius: 14px;&lt;br /&gt;
  border: 1px solid rgba( 255, 255, 255, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 滑动指示器 ── */&lt;br /&gt;
#gf-tab-indicator {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 4px;&lt;br /&gt;
  left: 4px;&lt;br /&gt;
  height: calc( 100% - 8px );&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 ),&lt;br /&gt;
              width 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );&lt;br /&gt;
  z-index: 0;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 单个tab ── */&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 1;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.4rem 1.2rem;&lt;br /&gt;
  font-size: 0.88rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.6 );&lt;br /&gt;
  transition: color 0.25s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  color: rgba( 255, 255, 255, 0.9 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 2px rgba( 61, 120, 196, 0.5 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 内容区 ── */&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 240px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.7rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18914</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18914"/>
		<updated>2026-06-20T14:12:17Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf2-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf2-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfnc-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfnc-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfb-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfb-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;gf-hero-fade-bottom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-switcher-wrap&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&amp;lt;div id=&amp;quot;gf-tab-indicator&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;{{:User:弃权者/首页/少女前线}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;{{:User:弃权者/首页/追放}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;{{:User:弃权者/首页/云图计划}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;{{:User:弃权者/首页/面包房行动}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18913</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18913"/>
		<updated>2026-06-20T14:09:54Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​撤销弃权者（讨论）的修订版本18912&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf2-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf2-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfnc-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfnc-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfb-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfb-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;{{:User:弃权者/首页/少女前线}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;{{:User:弃权者/首页/追放}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;{{:User:弃权者/首页/云图计划}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;{{:User:弃权者/首页/面包房行动}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18912</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18912"/>
		<updated>2026-06-20T14:09:27Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf2-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf2-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfnc-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfnc-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfb-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfb-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-bottom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-switcher-wrap&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&amp;lt;div id=&amp;quot;gf-tab-indicator&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/少女前线}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/追放}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/云图计划}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/面包房行动}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18911</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18911"/>
		<updated>2026-06-20T11:05:38Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide{&lt;br /&gt;
    transform:scale(1.04);&lt;br /&gt;
    opacity:0;&lt;br /&gt;
&lt;br /&gt;
    transition:&lt;br /&gt;
        opacity .7s ease,&lt;br /&gt;
        transform 6s linear;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active{&lt;br /&gt;
    opacity:1;&lt;br /&gt;
    transform:scale(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 1200px以内：只用fg层cover展示，bg层隐藏 */&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 超过1200px：bg层模糊铺满，fg层居中1200px清晰展示 */&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.05 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 切换按钮 */&lt;br /&gt;
#gf-switcher{&lt;br /&gt;
&lt;br /&gt;
    position:relative;&lt;br /&gt;
&lt;br /&gt;
    margin-top:-28px;&lt;br /&gt;
&lt;br /&gt;
    z-index:20;&lt;br /&gt;
    display:inline-flex;&lt;br /&gt;
&lt;br /&gt;
padding:6px;&lt;br /&gt;
&lt;br /&gt;
background:rgba(20,22,26,.82);&lt;br /&gt;
&lt;br /&gt;
backdrop-filter:blur(18px);&lt;br /&gt;
&lt;br /&gt;
border-radius:18px;&lt;br /&gt;
&lt;br /&gt;
box-shadow:&lt;br /&gt;
0 12px 30px rgba(0,0,0,.25);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.45rem 1.4rem;&lt;br /&gt;
  font-size: 0.9rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  letter-spacing: 0.03em;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 12px;&lt;br /&gt;
  border: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  color: #e8e8e8;&lt;br /&gt;
  transition: background 0.25s, border-color 0.25s, color 0.25s, transform 0.15s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  background: rgba( 60, 65, 80, 0.85 );&lt;br /&gt;
  border-color: #6ea7e0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-color: #3d78c4;&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  transform: scale( 1.04 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 3px rgba( 61, 120, 196, 0.45 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 内容区 */&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
  background: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 220px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.9rem;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #gf-switcher {&lt;br /&gt;
    gap: 0.35rem;&lt;br /&gt;
    padding: 0.75rem 0 1rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18910</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18910"/>
		<updated>2026-06-20T11:02:51Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide{&lt;br /&gt;
    transform:scale(1.04);&lt;br /&gt;
    opacity:0;&lt;br /&gt;
&lt;br /&gt;
    transition:&lt;br /&gt;
        opacity .7s ease,&lt;br /&gt;
        transform 6s linear;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 1200px以内：只用fg层cover展示，bg层隐藏 */&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 超过1200px：bg层模糊铺满，fg层居中1200px清晰展示 */&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.05 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 切换按钮 */&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.5rem;&lt;br /&gt;
  padding: 1rem 0 1.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.45rem 1.4rem;&lt;br /&gt;
  font-size: 0.9rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  letter-spacing: 0.03em;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 2em;&lt;br /&gt;
  border: 1.5px solid rgba( 255, 255, 255, 0.25 );&lt;br /&gt;
  background: rgba( 30, 32, 38, 0.72 );&lt;br /&gt;
  color: #e8e8e8;&lt;br /&gt;
  transition: background 0.25s, border-color 0.25s, color 0.25s, transform 0.15s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  background: rgba( 60, 65, 80, 0.85 );&lt;br /&gt;
  border-color: #6ea7e0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-color: #3d78c4;&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  transform: scale( 1.04 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 3px rgba( 61, 120, 196, 0.45 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 内容区 */&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
  background: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 220px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.9rem;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #gf-switcher {&lt;br /&gt;
    gap: 0.35rem;&lt;br /&gt;
    padding: 0.75rem 0 1rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18908</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18908"/>
		<updated>2026-06-20T09:29:58Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf2-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf2-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfnc-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfnc-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfb-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfb-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;{{:User:弃权者/首页/少女前线}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;{{:User:弃权者/首页/追放}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;{{:User:弃权者/首页/云图计划}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;{{:User:弃权者/首页/面包房行动}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18907</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18907"/>
		<updated>2026-06-20T09:29:14Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf2-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf2-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfnc-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfnc-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfb-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfb-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;{{:User:弃权者/首页/少女前线}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/追放}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/云图计划}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/面包房行动}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18906</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18906"/>
		<updated>2026-06-20T09:26:50Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 1200px以内：只用fg层cover展示，bg层隐藏 */&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 超过1200px：bg层模糊铺满，fg层居中1200px清晰展示 */&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.05 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 切换按钮 */&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.5rem;&lt;br /&gt;
  padding: 1rem 0 1.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.45rem 1.4rem;&lt;br /&gt;
  font-size: 0.9rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  letter-spacing: 0.03em;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 2em;&lt;br /&gt;
  border: 1.5px solid rgba( 255, 255, 255, 0.25 );&lt;br /&gt;
  background: rgba( 30, 32, 38, 0.72 );&lt;br /&gt;
  color: #e8e8e8;&lt;br /&gt;
  transition: background 0.25s, border-color 0.25s, color 0.25s, transform 0.15s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  background: rgba( 60, 65, 80, 0.85 );&lt;br /&gt;
  border-color: #6ea7e0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-color: #3d78c4;&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  transform: scale( 1.04 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 3px rgba( 61, 120, 196, 0.45 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 内容区 */&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
  background: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 220px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.9rem;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #gf-switcher {&lt;br /&gt;
    gap: 0.35rem;&lt;br /&gt;
    padding: 0.75rem 0 1rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18905</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18905"/>
		<updated>2026-06-20T09:23:15Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 1200px以内：只用fg层cover展示，bg层隐藏 */&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 超过1200px：bg层模糊铺满，fg层居中1200px清晰展示 */&lt;br /&gt;
@media ( min-width: 1201px ) {&lt;br /&gt;
  .gf-hero-bg {&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    filter: blur( 18px );&lt;br /&gt;
    transform: scale( 1.05 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-hero-fg {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 50%;&lt;br /&gt;
    transform: translateX( -50% );&lt;br /&gt;
    width: 1200px;&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center top;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 切换按钮 */&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.5rem;&lt;br /&gt;
  padding: 1rem 0 1.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.45rem 1.4rem;&lt;br /&gt;
  font-size: 0.9rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  letter-spacing: 0.03em;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 2em;&lt;br /&gt;
  border: 1.5px solid rgba( 255, 255, 255, 0.25 );&lt;br /&gt;
  background: rgba( 30, 32, 38, 0.72 );&lt;br /&gt;
  color: #e8e8e8;&lt;br /&gt;
  transition: background 0.25s, border-color 0.25s, color 0.25s, transform 0.15s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  background: rgba( 60, 65, 80, 0.85 );&lt;br /&gt;
  border-color: #6ea7e0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-color: #3d78c4;&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  transform: scale( 1.04 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 3px rgba( 61, 120, 196, 0.45 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 内容区 */&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 220px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.9rem;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #gf-switcher {&lt;br /&gt;
    gap: 0.35rem;&lt;br /&gt;
    padding: 0.75rem 0 1rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18904</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18904"/>
		<updated>2026-06-20T09:22:51Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf2-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf2-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfnc-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfnc-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfb-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfb-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/少女前线}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/追放}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/云图计划}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/面包房行动}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18903</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18903"/>
		<updated>2026-06-20T09:20:45Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gf2-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gf2-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfnc-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfnc-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-bg&amp;quot; id=&amp;quot;hero-gfb-bg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-fg&amp;quot; id=&amp;quot;hero-gfb-fg&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-bottom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/少女前线}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/追放}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/云图计划}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/面包房行动}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18902</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18902"/>
		<updated>2026-06-20T09:20:41Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
本Widget为少女前线系列多游戏首页提供切换交互逻辑。&lt;br /&gt;
不接受参数，直接在首页调用：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GFHomepageSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getApiBase() {&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var match = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( match ) { return match[ 1 ] + &#039;/api.php&#039;; }&lt;br /&gt;
    }&lt;br /&gt;
    return window.location.origin + &#039;/api.php&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    fetch( getApiBase() + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page  = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GameSwitcher: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColors() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var el = document.getElementById( &#039;gf-hero-fade-bottom&#039; );&lt;br /&gt;
    if ( el ) {&lt;br /&gt;
      el.style.background = &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  var currentGame = &#039;gf&#039;;&lt;br /&gt;
  var switching = false;&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game ) {&lt;br /&gt;
    if ( game === currentGame || switching ) { return; }&lt;br /&gt;
    switching = true;&lt;br /&gt;
&lt;br /&gt;
    var slides  = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var panels  = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
    var tabs    = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
&lt;br /&gt;
    var outSlide = document.getElementById( &#039;hero-&#039; + currentGame );&lt;br /&gt;
    var inSlide  = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      inSlide.style.zIndex     = &#039;1&#039;;&lt;br /&gt;
      inSlide.style.opacity    = &#039;0&#039;;&lt;br /&gt;
      inSlide.style.transition = &#039;opacity 0.5s ease&#039;;&lt;br /&gt;
      void inSlide.offsetWidth;&lt;br /&gt;
      inSlide.style.opacity    = &#039;1&#039;;&lt;br /&gt;
    }&lt;br /&gt;
    if ( outSlide ) {&lt;br /&gt;
      outSlide.style.zIndex     = &#039;0&#039;;&lt;br /&gt;
      outSlide.style.opacity    = &#039;1&#039;;&lt;br /&gt;
      outSlide.style.transition = &#039;opacity 0.5s ease&#039;;&lt;br /&gt;
      void outSlide.offsetWidth;&lt;br /&gt;
      outSlide.style.opacity    = &#039;0&#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    panels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      slides.forEach( function ( s ) {&lt;br /&gt;
        s.style.zIndex     = &#039;&#039;;&lt;br /&gt;
        s.style.opacity    = s.id === &#039;hero-&#039; + game ? &#039;1&#039; : &#039;0&#039;;&lt;br /&gt;
        s.style.transition = &#039;&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      currentGame = game;&lt;br /&gt;
      switching   = false;&lt;br /&gt;
    }, 520 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    /* 同时注入 bg（模糊层）和 fg（清晰层）*/&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var bg = document.getElementById( &#039;hero-&#039; + game + &#039;-bg&#039; );&lt;br /&gt;
        var fg = document.getElementById( &#039;hero-&#039; + game + &#039;-fg&#039; );&lt;br /&gt;
        var val = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;;&lt;br /&gt;
        if ( bg ) { bg.style.backgroundImage = val; }&lt;br /&gt;
        if ( fg ) { fg.style.backgroundImage = val; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColors();&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ) );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ) );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18901</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18901"/>
		<updated>2026-06-20T09:20:01Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 底层：模糊放大背景，铺满全宽 */&lt;br /&gt;
.gf-hero-bg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  filter: blur( 18px );&lt;br /&gt;
  transform: scale( 1.05 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 上层：原图居中，最大1200px，不拉伸 */&lt;br /&gt;
.gf-hero-fg {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  max-width: 1200px;&lt;br /&gt;
  left: 50%;&lt;br /&gt;
  transform: translateX( -50% );&lt;br /&gt;
  background-size: auto 100%;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 下方渐隐 */&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  height: 80px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.5rem;&lt;br /&gt;
  padding: 1rem 0 1.25rem;&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 5;&lt;br /&gt;
  margin-top: -2.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.45rem 1.4rem;&lt;br /&gt;
  font-size: 0.9rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  letter-spacing: 0.03em;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 2em;&lt;br /&gt;
  border: 1.5px solid rgba( 255, 255, 255, 0.25 );&lt;br /&gt;
  background: rgba( 30, 32, 38, 0.72 );&lt;br /&gt;
  color: #e8e8e8;&lt;br /&gt;
  transition: background 0.25s, border-color 0.25s, color 0.25s, transform 0.15s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  background: rgba( 60, 65, 80, 0.85 );&lt;br /&gt;
  border-color: #6ea7e0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-color: #3d78c4;&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  transform: scale( 1.04 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 3px rgba( 61, 120, 196, 0.45 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 220px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.9rem;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #gf-switcher {&lt;br /&gt;
    gap: 0.35rem;&lt;br /&gt;
    padding: 0.75rem 0 1rem;&lt;br /&gt;
    margin-top: -1.8rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18900</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18900"/>
		<updated>2026-06-20T09:10:02Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
本Widget为少女前线系列多游戏首页提供切换交互逻辑。&lt;br /&gt;
不接受参数，直接在首页调用：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GFHomepageSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getApiBase() {&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var match = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( match ) { return match[ 1 ] + &#039;/api.php&#039;; }&lt;br /&gt;
    }&lt;br /&gt;
    return window.location.origin + &#039;/api.php&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    fetch( getApiBase() + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page  = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GameSwitcher: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColors() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var defs = {&lt;br /&gt;
      &#039;gf-hero-fade-bottom&#039;: &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;,&lt;br /&gt;
      &#039;gf-hero-fade-left&#039;:   &#039;linear-gradient(to right, &#039;  + bg + &#039; 0%, transparent 100%)&#039;,&lt;br /&gt;
      &#039;gf-hero-fade-right&#039;:  &#039;linear-gradient(to left, &#039;   + bg + &#039; 0%, transparent 100%)&#039;&lt;br /&gt;
    };&lt;br /&gt;
    Object.keys( defs ).forEach( function ( id ) {&lt;br /&gt;
      var el = document.getElementById( id );&lt;br /&gt;
      if ( el ) { el.style.background = defs[ id ]; }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* 当前正在显示的游戏，用于防止动画中途重复触发 */&lt;br /&gt;
  var currentGame = &#039;gf&#039;;&lt;br /&gt;
  var switching = false;&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game ) {&lt;br /&gt;
    if ( game === currentGame || switching ) { return; }&lt;br /&gt;
    switching = true;&lt;br /&gt;
&lt;br /&gt;
    var slides = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var panels = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
    var tabs   = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
&lt;br /&gt;
    var outSlide = document.getElementById( &#039;hero-&#039; + currentGame );&lt;br /&gt;
    var inSlide  = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
&lt;br /&gt;
    /* 新图先置于底层不透明度0，再淡入；旧图同时淡出 */&lt;br /&gt;
    if ( inSlide ) {&lt;br /&gt;
      inSlide.style.zIndex   = &#039;1&#039;;&lt;br /&gt;
      inSlide.style.opacity  = &#039;0&#039;;&lt;br /&gt;
      inSlide.style.transition = &#039;opacity 0.5s ease&#039;;&lt;br /&gt;
      /* 强制reflow让transition生效 */&lt;br /&gt;
      void inSlide.offsetWidth;&lt;br /&gt;
      inSlide.style.opacity = &#039;1&#039;;&lt;br /&gt;
    }&lt;br /&gt;
    if ( outSlide ) {&lt;br /&gt;
      outSlide.style.zIndex    = &#039;0&#039;;&lt;br /&gt;
      outSlide.style.opacity   = &#039;1&#039;;&lt;br /&gt;
      outSlide.style.transition = &#039;opacity 0.5s ease&#039;;&lt;br /&gt;
      void outSlide.offsetWidth;&lt;br /&gt;
      outSlide.style.opacity   = &#039;0&#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* 内容面板切换 */&lt;br /&gt;
    panels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    /* tab状态 */&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    /* 动画结束后清理zIndex，解除锁定 */&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      slides.forEach( function ( s ) {&lt;br /&gt;
        s.style.zIndex    = &#039;&#039;;&lt;br /&gt;
        s.style.opacity   = s.id === &#039;hero-&#039; + game ? &#039;1&#039; : &#039;0&#039;;&lt;br /&gt;
        s.style.transition = &#039;&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      currentGame = game;&lt;br /&gt;
      switching   = false;&lt;br /&gt;
    }, 520 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    /* 预加载并注入背景图 */&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var el = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
        if ( el ) { el.style.backgroundImage = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColors();&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ) );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ) );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18899</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18899"/>
		<updated>2026-06-20T09:09:12Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  max-width: 1200px;&lt;br /&gt;
  height: 400px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.5s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  height: 80px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-left {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  width: 80px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-right {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  width: 80px;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.5rem;&lt;br /&gt;
  padding: 1rem 0 1.25rem;&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 5;&lt;br /&gt;
  margin-top: -2.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.45rem 1.4rem;&lt;br /&gt;
  font-size: 0.9rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  letter-spacing: 0.03em;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 2em;&lt;br /&gt;
  border: 1.5px solid rgba( 255, 255, 255, 0.25 );&lt;br /&gt;
  background: rgba( 30, 32, 38, 0.72 );&lt;br /&gt;
  color: #e8e8e8;&lt;br /&gt;
  transition: background 0.25s, border-color 0.25s, color 0.25s, transform 0.15s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  background: rgba( 60, 65, 80, 0.85 );&lt;br /&gt;
  border-color: #6ea7e0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-color: #3d78c4;&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  transform: scale( 1.04 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 3px rgba( 61, 120, 196, 0.45 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: 220px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.9rem;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #gf-switcher {&lt;br /&gt;
    gap: 0.35rem;&lt;br /&gt;
    padding: 0.75rem 0 1rem;&lt;br /&gt;
    margin-top: -1.8rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18898</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18898"/>
		<updated>2026-06-20T09:05:02Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-bottom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-left&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-right&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/少女前线}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/追放}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/云图计划}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/面包房行动}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18897</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18897"/>
		<updated>2026-06-20T09:04:33Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
本Widget为少女前线系列多游戏首页提供切换交互逻辑。&lt;br /&gt;
不接受参数，直接在首页调用：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GFHomepageSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    var scriptPath = ( document.querySelector( &#039;meta[name=&amp;quot;generator&amp;quot;]&#039; ) || {} ).content || &#039;&#039;;&lt;br /&gt;
    var origin = window.location.origin;&lt;br /&gt;
    var base = origin + &#039;/api.php&#039;;&lt;br /&gt;
&lt;br /&gt;
    /* 尝试从页面link标签或wgScriptPath推断api路径 */&lt;br /&gt;
    var canonical = document.querySelector( &#039;link[rel=&amp;quot;canonical&amp;quot;]&#039; );&lt;br /&gt;
    if ( canonical ) {&lt;br /&gt;
      var match = canonical.href.match( /^(https?:\/\/[^\/]+(?:\/[^\/]+)*?)\/wiki\// );&lt;br /&gt;
      if ( match ) {&lt;br /&gt;
        base = match[ 1 ] + &#039;/api.php&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    fetch( base + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page  = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function ( e ) { console.warn( &#039;GFWiki: 图片加载失败&#039;, filename, e ); } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColors() {&lt;br /&gt;
    var style = getComputedStyle( document.documentElement );&lt;br /&gt;
    var bg = style.getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
          || style.getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
          || &#039;#1d1e20&#039;;&lt;br /&gt;
    var defs = {&lt;br /&gt;
      &#039;gf-hero-fade-bottom&#039;: &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;,&lt;br /&gt;
      &#039;gf-hero-fade-left&#039;:   &#039;linear-gradient(to right, &#039;  + bg + &#039; 0%, transparent 100%)&#039;,&lt;br /&gt;
      &#039;gf-hero-fade-right&#039;:  &#039;linear-gradient(to left, &#039;   + bg + &#039; 0%, transparent 100%)&#039;&lt;br /&gt;
    };&lt;br /&gt;
    Object.keys( defs ).forEach( function ( id ) {&lt;br /&gt;
      var el = document.getElementById( id );&lt;br /&gt;
      if ( el ) { el.style.background = defs[ id ]; }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game ) {&lt;br /&gt;
    document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; ).forEach( function ( t ) {&lt;br /&gt;
      var on = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, on );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, on ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
    document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; ).forEach( function ( s ) {&lt;br /&gt;
      s.classList.toggle( &#039;active&#039;, s.id === &#039;hero-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
    document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; ).forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var el = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
        if ( el ) { el.style.backgroundImage = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;; }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    applyFadeColors();&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ) );&lt;br /&gt;
      } );&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ) );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, init );&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18896</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18896"/>
		<updated>2026-06-20T09:02:00Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: clamp( 220px, 38vw, 520px );&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.6s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  height: 55%;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-left {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  width: 20%;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-hero-fade-right {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  width: 20%;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.5rem;&lt;br /&gt;
  padding: 1rem 0 1.25rem;&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 5;&lt;br /&gt;
  margin-top: -2.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.45rem 1.4rem;&lt;br /&gt;
  font-size: 0.9rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  letter-spacing: 0.03em;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 2em;&lt;br /&gt;
  border: 1.5px solid rgba( 255, 255, 255, 0.25 );&lt;br /&gt;
  background: rgba( 30, 32, 38, 0.72 );&lt;br /&gt;
  color: #e8e8e8;&lt;br /&gt;
  transition: background 0.25s, border-color 0.25s, color 0.25s, transform 0.15s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  user-select: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  background: rgba( 60, 65, 80, 0.85 );&lt;br /&gt;
  border-color: #6ea7e0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-color: #3d78c4;&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  transform: scale( 1.04 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 3px rgba( 61, 120, 196, 0.45 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: clamp( 160px, 52vw, 280px );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.9rem;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #gf-switcher {&lt;br /&gt;
    gap: 0.35rem;&lt;br /&gt;
    padding: 0.75rem 0 1rem;&lt;br /&gt;
    margin-top: -1.8rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18895</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18895"/>
		<updated>2026-06-20T09:01:50Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
本Widget为少女前线系列多游戏首页提供切换交互逻辑。&lt;br /&gt;
不接受参数，直接在首页调用：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GFHomepageSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* 图片文件名对应关系，修改此处即可更换头图 */&lt;br /&gt;
  var heroImages = {&lt;br /&gt;
    &#039;gf&#039;:   &#039;index_gf_hero.jpg&#039;,&lt;br /&gt;
    &#039;gf2&#039;:  &#039;index_gf2_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfnc&#039;: &#039;index_gfnc_hero.jpg&#039;,&lt;br /&gt;
    &#039;gfb&#039;:  &#039;index_gfb_hero.jpg&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getWikiImageUrl( filename, callback ) {&lt;br /&gt;
    var api = mw.config.get( &#039;wgScriptPath&#039; ) + &#039;/api.php&#039;;&lt;br /&gt;
    fetch( api + &#039;?action=query&amp;amp;titles=File:&#039; + encodeURIComponent( filename ) +&lt;br /&gt;
           &#039;&amp;amp;prop=imageinfo&amp;amp;iiprop=url&amp;amp;format=json&amp;amp;origin=*&#039; )&lt;br /&gt;
      .then( function ( r ) { return r.json(); } )&lt;br /&gt;
      .then( function ( data ) {&lt;br /&gt;
        var pages = data.query.pages;&lt;br /&gt;
        var page  = pages[ Object.keys( pages )[ 0 ] ];&lt;br /&gt;
        if ( page.imageinfo &amp;amp;&amp;amp; page.imageinfo[ 0 ] ) {&lt;br /&gt;
          callback( page.imageinfo[ 0 ].url );&lt;br /&gt;
        }&lt;br /&gt;
      } )&lt;br /&gt;
      .catch( function () {} );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyFadeColors() {&lt;br /&gt;
    var bg = getComputedStyle( document.documentElement )&lt;br /&gt;
               .getPropertyValue( &#039;--color-surface-0&#039; ).trim()&lt;br /&gt;
             || getComputedStyle( document.documentElement )&lt;br /&gt;
               .getPropertyValue( &#039;--background-color-base&#039; ).trim()&lt;br /&gt;
             || &#039;#1d1e20&#039;;&lt;br /&gt;
    var map = {&lt;br /&gt;
      &#039;gf-hero-fade-bottom&#039;: &#039;linear-gradient(to bottom, transparent 0%, &#039; + bg + &#039; 100%)&#039;,&lt;br /&gt;
      &#039;gf-hero-fade-left&#039;:   &#039;linear-gradient(to right, &#039;  + bg + &#039; 0%, transparent 100%)&#039;,&lt;br /&gt;
      &#039;gf-hero-fade-right&#039;:  &#039;linear-gradient(to left, &#039;   + bg + &#039; 0%, transparent 100%)&#039;&lt;br /&gt;
    };&lt;br /&gt;
    Object.keys( map ).forEach( function ( id ) {&lt;br /&gt;
      var el = document.getElementById( id );&lt;br /&gt;
      if ( el ) { el.style.background = map[ id ]; }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function switchGame( game ) {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    var heroSlides = document.querySelectorAll( &#039;#gf-homepage .gf-hero-slide&#039; );&lt;br /&gt;
    var contentPanels = document.querySelectorAll( &#039;#gf-homepage .gf-content-panel&#039; );&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach( function ( t ) {&lt;br /&gt;
      var active = t.getAttribute( &#039;data-game&#039; ) === game;&lt;br /&gt;
      t.classList.toggle( &#039;active&#039;, active );&lt;br /&gt;
      t.setAttribute( &#039;aria-selected&#039;, active ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    heroSlides.forEach( function ( s ) {&lt;br /&gt;
      s.classList.toggle( &#039;active&#039;, s.id === &#039;hero-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    contentPanels.forEach( function ( p ) {&lt;br /&gt;
      p.classList.toggle( &#039;active&#039;, p.id === &#039;content-&#039; + game );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll( &#039;#gf-homepage .gf-tab&#039; );&lt;br /&gt;
    if ( !tabs.length ) { return; }&lt;br /&gt;
&lt;br /&gt;
    /* 通过API获取真实图片URL并注入背景 */&lt;br /&gt;
    Object.keys( heroImages ).forEach( function ( game ) {&lt;br /&gt;
      getWikiImageUrl( heroImages[ game ], function ( url ) {&lt;br /&gt;
        var el = document.getElementById( &#039;hero-&#039; + game );&lt;br /&gt;
        if ( el ) {&lt;br /&gt;
          el.style.backgroundImage = &#039;url(&amp;quot;&#039; + url + &#039;&amp;quot;)&#039;;&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    /* 应用渐隐遮罩颜色 */&lt;br /&gt;
    applyFadeColors();&lt;br /&gt;
&lt;br /&gt;
    /* 绑定点击事件 */&lt;br /&gt;
    tabs.forEach( function ( tab ) {&lt;br /&gt;
      tab.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
        switchGame( this.getAttribute( &#039;data-game&#039; ) );&lt;br /&gt;
      } );&lt;br /&gt;
      /* 键盘支持（Enter / Space） */&lt;br /&gt;
      tab.addEventListener( &#039;keydown&#039;, function ( e ) {&lt;br /&gt;
        if ( e.key === &#039;Enter&#039; || e.key === &#039; &#039; ) {&lt;br /&gt;
          e.preventDefault();&lt;br /&gt;
          switchGame( this.getAttribute( &#039;data-game&#039; ) );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  mw.hook( &#039;wikipage.content&#039; ).add( function () {&lt;br /&gt;
    init();&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
} )();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18894</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18894"/>
		<updated>2026-06-20T09:01:09Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-bottom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-left&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-right&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; role=&amp;quot;button&amp;quot; tabindex=&amp;quot;0&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/少女前线}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/追放}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/云图计划}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/面包房行动}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18893</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18893"/>
		<updated>2026-06-20T08:58:32Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;gf-homepage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ===== 头图区域 ===== --&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-hero-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-img-container&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-slide active&amp;quot; id=&amp;quot;hero-gf&amp;quot;&lt;br /&gt;
         style=&amp;quot;background-image: url(&#039;{{filepath:index_gf_hero.jpg}}&#039;);&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gf2&amp;quot;&lt;br /&gt;
         style=&amp;quot;background-image: url(&#039;{{filepath:index_gf2_hero.jpg}}&#039;);&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfnc&amp;quot;&lt;br /&gt;
         style=&amp;quot;background-image: url(&#039;{{filepath:index_gfnc_hero.jpg}}&#039;);&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gf-hero-slide&amp;quot; id=&amp;quot;hero-gfb&amp;quot;&lt;br /&gt;
         style=&amp;quot;background-image: url(&#039;{{filepath:index_gfb_hero.jpg}}&#039;);&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;!-- 头图渐隐遮罩 --&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-bottom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-left&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;gf-hero-fade-right&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ===== 切换按钮区域 ===== --&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-switcher&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;button class=&amp;quot;gf-tab active&amp;quot; data-game=&amp;quot;gf&amp;quot; aria-selected=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;gf-tab-label&amp;quot;&amp;gt;少女前线&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gf2&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;gf-tab-label&amp;quot;&amp;gt;少女前线2：追放&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfnc&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;gf-tab-label&amp;quot;&amp;gt;云图计划&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button class=&amp;quot;gf-tab&amp;quot; data-game=&amp;quot;gfb&amp;quot; aria-selected=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;gf-tab-label&amp;quot;&amp;gt;面包房行动&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ===== 内容区域（嵌入子页面） ===== --&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;gf-content-wrap&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel active&amp;quot; id=&amp;quot;content-gf&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/少女前线}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gf2&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/追放}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfnc&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/云图计划}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gf-content-panel&amp;quot; id=&amp;quot;content-gfb&amp;quot;&amp;gt;&lt;br /&gt;
    {{:User:弃权者/首页/面包房行动}}&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- #gf-homepage --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ===== 样式（通过Widget或TemplateStyles注入） ===== --&amp;gt;&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18892</id>
		<title>User:弃权者/首页/styles.css</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5/styles.css&amp;diff=18892"/>
		<updated>2026-06-20T08:58:28Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
#gf-homepage {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  margin-top: -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- 头图区域 --- */&lt;br /&gt;
#gf-hero-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: clamp( 220px, 38vw, 520px );&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  background-size: cover;&lt;br /&gt;
  background-position: center top;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: opacity 0.6s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-hero-slide.active {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 下方渐隐 */&lt;br /&gt;
#gf-hero-fade-bottom {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  height: 55%;&lt;br /&gt;
  background: linear-gradient( to bottom, transparent 0%, #1d1e20 100% );&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 左侧渐隐 */&lt;br /&gt;
#gf-hero-fade-left {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  width: 20%;&lt;br /&gt;
  background: linear-gradient( to right, #1d1e20 0%, transparent 100% );&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 右侧渐隐 */&lt;br /&gt;
#gf-hero-fade-right {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  right: 0;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
  width: 20%;&lt;br /&gt;
  background: linear-gradient( to left, #1d1e20 0%, transparent 100% );&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- 切换按钮区 --- */&lt;br /&gt;
#gf-switcher {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.5rem;&lt;br /&gt;
  padding: 1rem 0 1.25rem;&lt;br /&gt;
  position: relative;&lt;br /&gt;
  z-index: 5;&lt;br /&gt;
  margin-top: -2.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  padding: 0.45rem 1.4rem;&lt;br /&gt;
  font-size: 0.9rem;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  letter-spacing: 0.03em;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  border-radius: 2em;&lt;br /&gt;
  border: 1.5px solid rgba( 255, 255, 255, 0.25 );&lt;br /&gt;
  background: rgba( 30, 32, 38, 0.72 );&lt;br /&gt;
  color: #e8e8e8;&lt;br /&gt;
  transition: background 0.25s, border-color 0.25s, color 0.25s, transform 0.15s;&lt;br /&gt;
  outline: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:hover {&lt;br /&gt;
  background: rgba( 60, 65, 80, 0.85 );&lt;br /&gt;
  border-color: #6ea7e0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab.active {&lt;br /&gt;
  background: #3d78c4;&lt;br /&gt;
  border-color: #3d78c4;&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  transform: scale( 1.04 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-tab:focus {&lt;br /&gt;
  box-shadow: 0 0 0 3px rgba( 61, 120, 196, 0.45 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- 内容面板 --- */&lt;br /&gt;
#gf-content-wrap {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel {&lt;br /&gt;
  display: none;&lt;br /&gt;
  animation: gfFadeIn 0.35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gf-content-panel.active {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gfFadeIn {&lt;br /&gt;
  from {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY( 10px );&lt;br /&gt;
  }&lt;br /&gt;
  to {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY( 0 );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- 响应式：移动端 --- */&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
  #gf-hero-wrap {&lt;br /&gt;
    height: clamp( 160px, 52vw, 280px );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gf-tab {&lt;br /&gt;
    font-size: 0.78rem;&lt;br /&gt;
    padding: 0.35rem 0.9rem;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #gf-switcher {&lt;br /&gt;
    gap: 0.35rem;&lt;br /&gt;
    padding: 0.75rem 0 1rem;&lt;br /&gt;
    margin-top: -1.8rem;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18891</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18891"/>
		<updated>2026-06-20T08:57:27Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
本Widget为少女前线系列多游戏首页提供切换交互逻辑。&lt;br /&gt;
不接受参数，直接在首页调用：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GFHomepageSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll(&#039;#gf-homepage .gf-tab&#039;);&lt;br /&gt;
    var heroSlides = document.querySelectorAll(&#039;#gf-homepage .gf-hero-slide&#039;);&lt;br /&gt;
    var contentPanels = document.querySelectorAll(&#039;#gf-homepage .gf-content-panel&#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!tabs.length) return;&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach(function (tab) {&lt;br /&gt;
      tab.addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
        var game = this.getAttribute(&#039;data-game&#039;);&lt;br /&gt;
&lt;br /&gt;
        tabs.forEach(function (t) {&lt;br /&gt;
          t.classList.remove(&#039;active&#039;);&lt;br /&gt;
          t.setAttribute(&#039;aria-selected&#039;, &#039;false&#039;);&lt;br /&gt;
        });&lt;br /&gt;
        this.classList.add(&#039;active&#039;);&lt;br /&gt;
        this.setAttribute(&#039;aria-selected&#039;, &#039;true&#039;);&lt;br /&gt;
&lt;br /&gt;
        heroSlides.forEach(function (s) {&lt;br /&gt;
          s.classList.remove(&#039;active&#039;);&lt;br /&gt;
          if (s.id === &#039;hero-&#039; + game) {&lt;br /&gt;
            s.classList.add(&#039;active&#039;);&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        contentPanels.forEach(function (p) {&lt;br /&gt;
          p.classList.remove(&#039;active&#039;);&lt;br /&gt;
          if (p.id === &#039;content-&#039; + game) {&lt;br /&gt;
            p.classList.add(&#039;active&#039;);&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
    document.addEventListener(&#039;DOMContentLoaded&#039;, init);&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18890</id>
		<title>Widget:GameSwitcher</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=Widget:GameSwitcher&amp;diff=18890"/>
		<updated>2026-06-20T08:57:01Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
本Widget为少女前线系列多游戏首页提供切换交互逻辑。&lt;br /&gt;
不接受参数，直接在首页调用：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#widget:GFHomepageSwitcher}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;onlyinclude&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    var tabs = document.querySelectorAll(&#039;#gf-homepage .gf-tab&#039;);&lt;br /&gt;
    var heroSlides = document.querySelectorAll(&#039;#gf-homepage .gf-hero-slide&#039;);&lt;br /&gt;
    var contentPanels = document.querySelectorAll(&#039;#gf-homepage .gf-content-panel&#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!tabs.length) return;&lt;br /&gt;
&lt;br /&gt;
    tabs.forEach(function (tab) {&lt;br /&gt;
      tab.addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
        var game = this.getAttribute(&#039;data-game&#039;);&lt;br /&gt;
&lt;br /&gt;
        tabs.forEach(function (t) {&lt;br /&gt;
          t.classList.remove(&#039;active&#039;);&lt;br /&gt;
          t.setAttribute(&#039;aria-selected&#039;, &#039;false&#039;);&lt;br /&gt;
        });&lt;br /&gt;
        this.classList.add(&#039;active&#039;);&lt;br /&gt;
        this.setAttribute(&#039;aria-selected&#039;, &#039;true&#039;);&lt;br /&gt;
&lt;br /&gt;
        heroSlides.forEach(function (s) {&lt;br /&gt;
          s.classList.remove(&#039;active&#039;);&lt;br /&gt;
          if (s.id === &#039;hero-&#039; + game) {&lt;br /&gt;
            s.classList.add(&#039;active&#039;);&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        contentPanels.forEach(function (p) {&lt;br /&gt;
          p.classList.remove(&#039;active&#039;);&lt;br /&gt;
          if (p.id === &#039;content-&#039; + game) {&lt;br /&gt;
            p.classList.add(&#039;active&#039;);&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
    document.addEventListener(&#039;DOMContentLoaded&#039;, init);&lt;br /&gt;
  } else {&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/onlyinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
	<entry>
		<id>https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18889</id>
		<title>User:弃权者/首页</title>
		<link rel="alternate" type="text/html" href="https://gf-ogas.wiki/index.php?title=User:%E5%BC%83%E6%9D%83%E8%80%85/%E9%A6%96%E9%A1%B5&amp;diff=18889"/>
		<updated>2026-06-20T08:41:01Z</updated>

		<summary type="html">&lt;p&gt;弃权者：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;User:弃权者/首页/styles.css&amp;quot; /&amp;gt;&amp;lt;div class=&amp;quot;game-switcher&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;game-switcher&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;gs-hero-wrap&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gs-tabs&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gs-tab-btn&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;tab&amp;quot;&lt;br /&gt;
    data-panel=&amp;quot;panel-dst&amp;quot;&lt;br /&gt;
    data-hero=&amp;quot;{{filepath:index_gf_hero.jpg}}&amp;quot;&lt;br /&gt;
    data-page=&amp;quot;User:弃权者/首页/少女前线&amp;quot;&amp;gt;少女前线&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gs-tab-btn&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;tab&amp;quot;&lt;br /&gt;
    data-panel=&amp;quot;panel-dse&amp;quot;&lt;br /&gt;
    data-hero=&amp;quot;{{filepath:index_gf2_hero.jpg}}&amp;quot;&lt;br /&gt;
    data-page=&amp;quot;User:弃权者/首页/追放&amp;quot;&amp;gt;追放&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gs-tab-btn&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;tab&amp;quot;&lt;br /&gt;
    data-panel=&amp;quot;panel-ds&amp;quot;&lt;br /&gt;
    data-hero=&amp;quot;{{filepath:index_gfnc_hero.jpg}}&amp;quot;&lt;br /&gt;
    data-page=&amp;quot;User:弃权者/首页/云图计划&amp;quot;&amp;gt;云图计划&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gs-tab-btn&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;tab&amp;quot;&lt;br /&gt;
    data-panel=&amp;quot;panel-ds&amp;quot;&lt;br /&gt;
    data-hero=&amp;quot;{{filepath:index_gfb_hero.jpg}}&amp;quot;&lt;br /&gt;
    data-page=&amp;quot;User:弃权者/首页/面包房行动&amp;quot;&amp;gt;面包房行动&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gs-content&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gs-content-panel gs-active&amp;quot; id=&amp;quot;panel-dst&amp;quot;&amp;gt;{{:User:弃权者/首页/少女前线}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#widget:GameSwitcher}}&lt;/div&gt;</summary>
		<author><name>弃权者</name></author>
	</entry>
</feed>