init
120
rse/public/account/index.html
Normal file
@@ -0,0 +1,120 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="icon" href="/icon/ai.svg" type="image/svg+xml">
|
||||
<title>Account | Airse</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&family=Space+Mono:wght@400&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
:root{--c-bg:#f5f5f8;--c-text:#1a1a2e;--c-accent:#3a7ca5;--c-accent2:#6a5acd;--c-dim:#8888a0;--f-d:'Orbitron',sans-serif;--f-b:'Space Mono',monospace}
|
||||
html,body{width:100%;height:100%;background:var(--c-bg);color:var(--c-text);font-size:calc(1rem + 3px)}
|
||||
.site-header{position:fixed;top:0;left:0;width:100%;height:5rem;padding:0 2rem;display:flex;align-items:center;z-index:110;background:var(--c-bg)}
|
||||
.header-logo{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--c-text);margin-right:auto}
|
||||
.header-logo-icon{width:24px;height:24px}
|
||||
.header-logo-text{font-family:var(--f-d);font-weight:700;font-size:.85rem;letter-spacing:.1em}
|
||||
.site-footer{position:fixed;bottom:0;left:0;width:100%;padding:1.5rem 2rem 2.5rem;z-index:110;display:flex;flex-direction:column;align-items:center;background:var(--c-bg)}
|
||||
.footer-copy{font-family:var(--f-b);font-size:.6rem;letter-spacing:.1em;color:var(--c-dim)}
|
||||
.lang-selector{position:relative}
|
||||
.lang-btn{display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:6px;cursor:pointer;padding:6px;opacity:.4;transition:opacity .3s,background .3s}
|
||||
.lang-btn:hover{opacity:.9;background:rgba(26,26,46,.06)}
|
||||
.lang-icon{width:20px;height:20px}
|
||||
.lang-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);min-width:100px;overflow:hidden}
|
||||
.lang-dropdown.show{display:block}
|
||||
.lang-option{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;cursor:pointer;font-family:var(--f-b);font-size:.75rem;letter-spacing:.05em;transition:background .15s}
|
||||
.lang-option:hover{background:#f0f0f0}
|
||||
.lang-option.selected{background:linear-gradient(135deg,#f0f7ff,#e8f4ff)}
|
||||
.lang-check{width:18px;height:18px;border-radius:50%;border:2px solid #ccc;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .2s;color:transparent}
|
||||
.lang-option.selected .lang-check{background:var(--c-accent);border-color:var(--c-accent);color:#fff}
|
||||
.menu-selector{position:relative;margin-left:8px}
|
||||
.menu-btn{display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:6px;cursor:pointer;padding:6px;opacity:.4;transition:opacity .3s,background .3s}
|
||||
.menu-btn:hover{opacity:.9;background:rgba(26,26,46,.06)}
|
||||
.menu-icon{width:20px;height:20px}
|
||||
.menu-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);min-width:180px;overflow:hidden}
|
||||
.menu-dropdown.show{display:block}
|
||||
.menu-option{display:flex;align-items:center;padding:10px 14px;cursor:pointer;font-family:var(--f-b);font-size:.75rem;letter-spacing:.05em;transition:background .15s}
|
||||
.menu-option:hover{background:#f0f0f0}
|
||||
a.menu-option{text-decoration:none;color:inherit}
|
||||
.menu-option-active{background:linear-gradient(135deg,#f0f7ff,#e8f4ff)}
|
||||
.page{position:fixed;top:5rem;left:0;width:100%;height:calc(100% - 5rem);z-index:10;display:flex;flex-direction:column;align-items:center;background:var(--c-bg);justify-content:flex-start;overflow-y:auto}
|
||||
.subpage-content{width:100%;max-width:640px;margin:0 auto;padding:4rem 2rem 6rem}
|
||||
.subpage-heading{font-family:var(--f-d);font-weight:700;font-size:clamp(1rem,2.5vw,1.4rem);letter-spacing:.1em;color:var(--c-text);margin-bottom:.8rem}
|
||||
.subpage-section{margin-top:2.5rem}
|
||||
.subpage-section-title{font-family:var(--f-d);font-weight:700;font-size:clamp(.85rem,1.8vw,1.1rem);letter-spacing:.1em;color:var(--c-text);margin-bottom:.8rem}
|
||||
.subpage-section-line{width:clamp(40px,8vw,80px);height:1px;background:linear-gradient(90deg,var(--c-accent),var(--c-accent2),transparent);margin-bottom:1rem}
|
||||
.subpage-section-text{font-family:var(--f-b);font-size:clamp(.65rem,1.1vw,.8rem);line-height:2;letter-spacing:.05em;color:rgba(26,26,46,.6)}
|
||||
.subpage-section-text a{color:var(--c-accent);text-decoration:none;word-break:break-all}
|
||||
.subpage-section-text a:hover{text-decoration:underline}
|
||||
.subpage-section-text code{background:rgba(26,26,46,.06);padding:.15em .4em;border-radius:3px;font-size:.9em}
|
||||
.subpage-img{max-width:100%;border-radius:4px;margin:.5rem 0}
|
||||
@media(max-width:768px){.site-header{padding:.8rem 1rem}.site-footer{padding:1rem 1rem 1.5rem}}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header class="site-header">
|
||||
<a href="/" class="header-logo">
|
||||
<img src="/icon/ai.svg" alt="Airse" class="header-logo-icon">
|
||||
<span class="header-logo-text">Airse</span>
|
||||
</a>
|
||||
<div class="lang-selector">
|
||||
<button type="button" class="lang-btn" id="lang-tab">
|
||||
<img src="/icon/language.svg" alt="Lang" class="lang-icon">
|
||||
</button>
|
||||
<div class="lang-dropdown" id="lang-dropdown">
|
||||
<div class="lang-option selected" data-lang="en"><span class="lang-name">EN</span><span class="lang-check">✓</span></div>
|
||||
<div class="lang-option" data-lang="ja"><span class="lang-name">JA</span><span class="lang-check">✓</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-selector">
|
||||
<button type="button" class="menu-btn" id="menu-btn">
|
||||
<img src="/icon/menu.svg" alt="Menu" class="menu-icon">
|
||||
</button>
|
||||
<div class="menu-dropdown" id="menu-dropdown">
|
||||
<a href="/" class="menu-option"><span class="menu-option-text">Airse</span></a>
|
||||
<a href="/account" class="menu-option menu-option-active"><span class="menu-option-text" data-lang-en="Account" data-lang-ja="アカウント">Account</span></a>
|
||||
<a href="/privacy" class="menu-option"><span class="menu-option-text" data-lang-en="Privacy" data-lang-ja="プライバシー">Privacy</span></a>
|
||||
<a href="/terms" class="menu-option"><span class="menu-option-text" data-lang-en="Terms" data-lang-ja="利用規約">Terms</span></a>
|
||||
<a href="/support" class="menu-option"><span class="menu-option-text" data-lang-en="Support" data-lang-ja="サポート">Support</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<footer class="site-footer"><div class="footer-copy">©syui</div></footer>
|
||||
|
||||
<div class="page">
|
||||
<div class="subpage-content">
|
||||
<h1 class="subpage-heading" data-lang-en="Account" data-lang-ja="アカウント">Account</h1>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="Your SNS account is your game account." data-lang-ja="SNSアカウントがゲームアカウントになります。">Your SNS account is your game account.</p>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title" data-lang-en="Sign In" data-lang-ja="サインイン">Sign In</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="Sign in with your Bluesky account to access your game data." data-lang-ja="Blueskyアカウントでサインインしてゲームデータにアクセスできます。">Sign in with your Bluesky account to access your game data.</p>
|
||||
<p class="subpage-section-text" data-lang-en="Account data is managed through the AT Protocol." data-lang-ja="アカウントデータはAT Protocolを通じて管理されます。">Account data is managed through the AT Protocol.</p>
|
||||
</div>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title" data-lang-en="Check Game Data" data-lang-ja="ゲームデータの確認">Check Game Data</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="Access <a href='https://syui.ai/' target='_blank' rel='noopener'>https://syui.ai/</a> and search by your username (handle)." data-lang-ja="<a href='https://syui.ai/' target='_blank' rel='noopener'>https://syui.ai/</a> にアクセスして、自分のusername(handle)で検索します。">Access <a href="https://syui.ai/" target="_blank" rel="noopener">https://syui.ai/</a> and search by your username (handle).</p>
|
||||
<p class="subpage-section-text" data-lang-en="For example, if your name is <code>syui.ai</code>, the URL will be:" data-lang-ja="例えば、<code>syui.ai</code>という名前なら以下のURLになります。">For example, if your name is <code>syui.ai</code>, the URL will be:</p>
|
||||
<p class="subpage-section-text"><a href="https://syui.ai/@syui.ai/at/rse" target="_blank" rel="noopener">https://syui.ai/@syui.ai/at/rse</a></p>
|
||||
</div>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title" data-lang-en="Delete Game Data" data-lang-ja="ゲームデータの削除">Delete Game Data</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="Log in at <a href='https://syui.ai/' target='_blank' rel='noopener'>https://syui.ai/</a>, then delete the <code>ai.syui.rse.user</code> service." data-lang-ja="<a href='https://syui.ai/' target='_blank' rel='noopener'>https://syui.ai/</a> からログインします。そして、<code>ai.syui.rse.user</code>のサービスを削除します。">Log in at <a href="https://syui.ai/" target="_blank" rel="noopener">https://syui.ai/</a>, then delete the <code>ai.syui.rse.user</code> service.</p>
|
||||
<img src="/img/bluesky_oauth.png" alt="Bluesky OAuth" class="subpage-img">
|
||||
<p class="subpage-section-text" data-lang-en="For example, if your name is <code>syui.ai</code>, you can delete it from the following URL (login required):" data-lang-ja="例えば、<code>syui.ai</code>という名前なら以下のURLから削除することができます。この操作はログインしている場合に限ります。">For example, if your name is <code>syui.ai</code>, you can delete it from the following URL (login required):</p>
|
||||
<p class="subpage-section-text"><a href="https://syui.ai/@syui.ai/at/collection/ai.syui.rse.user/self" target="_blank" rel="noopener">https://syui.ai/@syui.ai/at/collection/ai.syui.rse.user/self</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
!function(){var l=localStorage.getItem('preferred-lang')||'en',d=document,lb=d.getElementById('lang-tab'),ld=d.getElementById('lang-dropdown'),mb=d.getElementById('menu-btn'),md=d.getElementById('menu-dropdown');function a(g){d.querySelectorAll('[data-lang-en]').forEach(function(e){var t=e.getAttribute('data-lang-'+g);if(t)e.innerHTML=t});ld.querySelectorAll('.lang-option').forEach(function(o){o.classList.toggle('selected',o.dataset.lang===g)})}lb.onclick=function(e){e.stopPropagation();ld.classList.toggle('show');md.classList.remove('show')};ld.querySelectorAll('.lang-option').forEach(function(o){o.onclick=function(e){e.stopPropagation();l=o.dataset.lang||'en';localStorage.setItem('preferred-lang',l);a(l);ld.classList.remove('show')}});mb.onclick=function(e){e.stopPropagation();md.classList.toggle('show');ld.classList.remove('show')};d.onclick=function(){ld.classList.remove('show');md.classList.remove('show')};a(l)}()
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
19
rse/public/icon/ai.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="1024" height="1024">
|
||||
<path fill-rule="evenodd" fill="#F6E717" d="
|
||||
M 619,232
|
||||
L 512,7
|
||||
L 405,232
|
||||
A 300,300 0 0,0 216,559
|
||||
L 75,765
|
||||
L 323,745
|
||||
A 300,300 0 0,0 701,745
|
||||
L 949,765
|
||||
L 808,559
|
||||
A 300,300 0 0,0 619,232
|
||||
Z
|
||||
M 512,337
|
||||
A 175,175 0 0,0 512,687
|
||||
A 175,175 0 0,0 512,337
|
||||
Z
|
||||
"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 413 B |
1
rse/public/icon/language.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M192 64C209.7 64 224 78.3 224 96L224 128L352 128C369.7 128 384 142.3 384 160C384 177.7 369.7 192 352 192L342.4 192L334 215.1C317.6 260.3 292.9 301.6 261.8 337.1C276 345.9 290.8 353.7 306.2 360.6L356.6 383L418.8 243C423.9 231.4 435.4 224 448 224C460.6 224 472.1 231.4 477.2 243L605.2 531C612.4 547.2 605.1 566.1 589 573.2C572.9 580.3 553.9 573.1 546.8 557L526.8 512L369.3 512L349.3 557C342.1 573.2 323.2 580.4 307.1 573.2C291 566 283.7 547.1 290.9 531L330.7 441.5L280.3 419.1C257.3 408.9 235.3 396.7 214.5 382.7C193.2 399.9 169.9 414.9 145 427.4L110.3 444.6C94.5 452.5 75.3 446.1 67.4 430.3C59.5 414.5 65.9 395.3 81.7 387.4L116.2 370.1C132.5 361.9 148 352.4 162.6 341.8C148.8 329.1 135.8 315.4 123.7 300.9L113.6 288.7C102.3 275.1 104.1 254.9 117.7 243.6C131.3 232.3 151.5 234.1 162.8 247.7L173 259.9C184.5 273.8 197.1 286.7 210.4 298.6C237.9 268.2 259.6 232.5 273.9 193.2L274.4 192L64.1 192C46.3 192 32 177.7 32 160C32 142.3 46.3 128 64 128L160 128L160 96C160 78.3 174.3 64 192 64zM448 334.8L397.7 448L498.3 448L448 334.8z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
rse/public/icon/menu.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M96 160C96 142.3 110.3 128 128 128L512 128C529.7 128 544 142.3 544 160C544 177.7 529.7 192 512 192L128 192C110.3 192 96 177.7 96 160zM96 320C96 302.3 110.3 288 128 288L512 288C529.7 288 544 302.3 544 320C544 337.7 529.7 352 512 352L128 352C110.3 352 96 337.7 96 320zM544 480C544 497.7 529.7 512 512 512L128 512C110.3 512 96 497.7 96 480C96 462.3 110.3 448 128 448L512 448C529.7 448 544 462.3 544 480z"/></svg>
|
||||
|
After Width: | Height: | Size: 631 B |
BIN
rse/public/img/bluesky_oauth.png
Normal file
|
After Width: | Height: | Size: 174 KiB |
BIN
rse/public/img/h.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
rse/public/img/hh.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
rse/public/img/logo.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
rse/public/img/w.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
rse/public/img/ww.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
142
rse/public/privacy/index.html
Normal file
@@ -0,0 +1,142 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="icon" href="/icon/ai.svg" type="image/svg+xml">
|
||||
<title>Privacy Policy | Airse</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&family=Space+Mono:wght@400&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
:root{--c-bg:#f5f5f8;--c-text:#1a1a2e;--c-accent:#3a7ca5;--c-accent2:#6a5acd;--c-dim:#8888a0;--f-d:'Orbitron',sans-serif;--f-b:'Space Mono',monospace}
|
||||
html,body{width:100%;height:100%;background:var(--c-bg);color:var(--c-text);font-size:calc(1rem + 3px)}
|
||||
.site-header{position:fixed;top:0;left:0;width:100%;height:5rem;padding:0 2rem;display:flex;align-items:center;z-index:110;background:var(--c-bg)}
|
||||
.header-logo{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--c-text);margin-right:auto}
|
||||
.header-logo-icon{width:24px;height:24px}
|
||||
.header-logo-text{font-family:var(--f-d);font-weight:700;font-size:.85rem;letter-spacing:.1em}
|
||||
.site-footer{position:fixed;bottom:0;left:0;width:100%;padding:1.5rem 2rem 2.5rem;z-index:110;display:flex;flex-direction:column;align-items:center;background:var(--c-bg)}
|
||||
.footer-copy{font-family:var(--f-b);font-size:.6rem;letter-spacing:.1em;color:var(--c-dim)}
|
||||
.lang-selector{position:relative}
|
||||
.lang-btn{display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:6px;cursor:pointer;padding:6px;opacity:.4;transition:opacity .3s,background .3s}
|
||||
.lang-btn:hover{opacity:.9;background:rgba(26,26,46,.06)}
|
||||
.lang-icon{width:20px;height:20px}
|
||||
.lang-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);min-width:100px;overflow:hidden}
|
||||
.lang-dropdown.show{display:block}
|
||||
.lang-option{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;cursor:pointer;font-family:var(--f-b);font-size:.75rem;letter-spacing:.05em;transition:background .15s}
|
||||
.lang-option:hover{background:#f0f0f0}
|
||||
.lang-option.selected{background:linear-gradient(135deg,#f0f7ff,#e8f4ff)}
|
||||
.lang-check{width:18px;height:18px;border-radius:50%;border:2px solid #ccc;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .2s;color:transparent}
|
||||
.lang-option.selected .lang-check{background:var(--c-accent);border-color:var(--c-accent);color:#fff}
|
||||
.menu-selector{position:relative;margin-left:8px}
|
||||
.menu-btn{display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:6px;cursor:pointer;padding:6px;opacity:.4;transition:opacity .3s,background .3s}
|
||||
.menu-btn:hover{opacity:.9;background:rgba(26,26,46,.06)}
|
||||
.menu-icon{width:20px;height:20px}
|
||||
.menu-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);min-width:180px;overflow:hidden}
|
||||
.menu-dropdown.show{display:block}
|
||||
.menu-option{display:flex;align-items:center;padding:10px 14px;cursor:pointer;font-family:var(--f-b);font-size:.75rem;letter-spacing:.05em;transition:background .15s}
|
||||
.menu-option:hover{background:#f0f0f0}
|
||||
a.menu-option{text-decoration:none;color:inherit}
|
||||
.menu-option-active{background:linear-gradient(135deg,#f0f7ff,#e8f4ff)}
|
||||
.page{position:fixed;top:5rem;left:0;width:100%;height:calc(100% - 5rem);z-index:10;display:flex;flex-direction:column;align-items:center;background:var(--c-bg);justify-content:flex-start;overflow-y:auto}
|
||||
.subpage-content{width:100%;max-width:640px;margin:0 auto;padding:4rem 2rem 6rem}
|
||||
.subpage-heading{font-family:var(--f-d);font-weight:700;font-size:clamp(1rem,2.5vw,1.4rem);letter-spacing:.1em;color:var(--c-text);margin-bottom:.8rem}
|
||||
.subpage-section{margin-top:2.5rem}
|
||||
.subpage-section-title{font-family:var(--f-d);font-weight:700;font-size:clamp(.85rem,1.8vw,1.1rem);letter-spacing:.1em;color:var(--c-text);margin-bottom:.8rem}
|
||||
.subpage-section-line{width:clamp(40px,8vw,80px);height:1px;background:linear-gradient(90deg,var(--c-accent),var(--c-accent2),transparent);margin-bottom:1rem}
|
||||
.subpage-section-text{font-family:var(--f-b);font-size:clamp(.65rem,1.1vw,.8rem);line-height:2;letter-spacing:.05em;color:rgba(26,26,46,.6)}
|
||||
.subpage-list{list-style:none;margin-top:1.5rem;display:flex;flex-direction:column;gap:1rem}
|
||||
.subpage-list-item{font-family:var(--f-b);font-size:clamp(.65rem,1.1vw,.8rem);line-height:2;letter-spacing:.05em;color:rgba(26,26,46,.6);padding-left:1.2em;position:relative}
|
||||
.subpage-list-item::before{content:'';position:absolute;left:0;top:.85em;width:6px;height:6px;border-radius:50%;background:linear-gradient(135deg,var(--c-accent),var(--c-accent2))}
|
||||
.subpage-section-text a{color:var(--c-accent);text-decoration:none;word-break:break-all}
|
||||
.subpage-section-text a:hover{text-decoration:underline}
|
||||
.subpage-section-text code{background:rgba(26,26,46,.06);padding:.15em .4em;border-radius:3px;font-size:.9em}
|
||||
@media(max-width:768px){.site-header{padding:.8rem 1rem}.site-footer{padding:1rem 1rem 1.5rem}}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header class="site-header">
|
||||
<a href="/" class="header-logo">
|
||||
<img src="/icon/ai.svg" alt="Airse" class="header-logo-icon">
|
||||
<span class="header-logo-text">Airse</span>
|
||||
</a>
|
||||
<div class="lang-selector">
|
||||
<button type="button" class="lang-btn" id="lang-tab">
|
||||
<img src="/icon/language.svg" alt="Lang" class="lang-icon">
|
||||
</button>
|
||||
<div class="lang-dropdown" id="lang-dropdown">
|
||||
<div class="lang-option selected" data-lang="en"><span class="lang-name">EN</span><span class="lang-check">✓</span></div>
|
||||
<div class="lang-option" data-lang="ja"><span class="lang-name">JA</span><span class="lang-check">✓</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-selector">
|
||||
<button type="button" class="menu-btn" id="menu-btn">
|
||||
<img src="/icon/menu.svg" alt="Menu" class="menu-icon">
|
||||
</button>
|
||||
<div class="menu-dropdown" id="menu-dropdown">
|
||||
<a href="/" class="menu-option"><span class="menu-option-text">Airse</span></a>
|
||||
<a href="/account" class="menu-option"><span class="menu-option-text" data-lang-en="Account" data-lang-ja="アカウント">Account</span></a>
|
||||
<a href="/privacy" class="menu-option menu-option-active"><span class="menu-option-text" data-lang-en="Privacy" data-lang-ja="プライバシー">Privacy</span></a>
|
||||
<a href="/terms" class="menu-option"><span class="menu-option-text" data-lang-en="Terms" data-lang-ja="利用規約">Terms</span></a>
|
||||
<a href="/support" class="menu-option"><span class="menu-option-text" data-lang-en="Support" data-lang-ja="サポート">Support</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<footer class="site-footer"><div class="footer-copy">©syui</div></footer>
|
||||
|
||||
<div class="page">
|
||||
<div class="subpage-content">
|
||||
<h1 class="subpage-heading" data-lang-en="Privacy Policy" data-lang-ja="プライバシーポリシー">Privacy Policy</h1>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="Airse is an open-world action game that utilizes the AT Protocol for account authentication. This Privacy Policy explains how we handle your information when you use our game." data-lang-ja="Airseは、AT Protocolをアカウント認証に利用するオープンワールドアクションゲームです。本プライバシーポリシーは、ゲーム利用時における情報の取り扱いについて説明します。">Airse is an open-world action game that utilizes the AT Protocol for account authentication. This Privacy Policy explains how we handle your information when you use our game.</p>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title" data-lang-en="Information Collection" data-lang-ja="情報の収集">Information Collection</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="We do not collect any personal information." data-lang-ja="個人情報は一切収集しません。">We do not collect any personal information.</p>
|
||||
<p class="subpage-section-text" data-lang-en="Airse does not track, store, or analyze any user data, gameplay statistics, or personal information. Your gaming experience remains private." data-lang-ja="Airseはユーザーデータ、ゲームプレイ統計、個人情報の追跡・保存・分析を行いません。ゲーム体験はプライベートに保たれます。">Airse does not track, store, or analyze any user data, gameplay statistics, or personal information. Your gaming experience remains private.</p>
|
||||
</div>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title" data-lang-en="Account Authentication" data-lang-ja="アカウント認証">Account Authentication</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="Airse uses AT Protocol for account login functionality. When you log in:" data-lang-ja="AirseはAT Protocolをアカウントログインに使用します。ログイン時:">Airse uses AT Protocol for account login functionality. When you log in:</p>
|
||||
<ul class="subpage-list">
|
||||
<li class="subpage-list-item" data-lang-en="We only use your AT Protocol identity for authentication purposes." data-lang-ja="AT Protocolのアイデンティティは認証目的のみに使用します。">We only use your AT Protocol identity for authentication purposes.</li>
|
||||
<li class="subpage-list-item" data-lang-en="No additional data is collected or stored beyond what is necessary for login." data-lang-ja="ログインに必要な範囲を超えたデータの収集・保存は行いません。">No additional data is collected or stored beyond what is necessary for login.</li>
|
||||
<li class="subpage-list-item" data-lang-en="Your credentials are handled securely through the AT Protocol." data-lang-ja="認証情報はAT Protocolを通じて安全に処理されます。">Your credentials are handled securely through the AT Protocol.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title" data-lang-en="syu.is Service Users" data-lang-ja="syu.isサービス利用者">syu.is Service Users</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<ul class="subpage-list">
|
||||
<li class="subpage-list-item" data-lang-en="The service operator reserves the right to suspend or terminate (ban) accounts at their discretion." data-lang-ja="サービス運営者は、自身の裁量でアカウントの停止または終了(BAN)を行う権利を有します。">The service operator reserves the right to suspend or terminate (ban) accounts at their discretion.</li>
|
||||
<li class="subpage-list-item" data-lang-en="This may occur in cases of terms of service violations or inappropriate behavior." data-lang-ja="利用規約違反や不適切な行為があった場合に行われることがあります。">This may occur in cases of terms of service violations or inappropriate behavior.</li>
|
||||
<li class="subpage-list-item" data-lang-en="Account suspension decisions are final." data-lang-ja="アカウント停止の判断は最終的なものです。">Account suspension decisions are final.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title" data-lang-en="Third-Party Services" data-lang-ja="第三者サービス">Third-Party Services</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="Airse relies on AT Protocol infrastructure. Please refer to the privacy policies of your AT Protocol provider (PDS) for information about how they handle your data." data-lang-ja="AirseはAT Protocolのインフラに依存しています。データの取り扱いについては、ご利用のAT Protocolプロバイダー(PDS)のプライバシーポリシーをご参照ください。">Airse relies on AT Protocol infrastructure. Please refer to the privacy policies of your AT Protocol provider (PDS) for information about how they handle your data.</p>
|
||||
</div>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title" data-lang-en="Changes to This Policy" data-lang-ja="ポリシーの変更">Changes to This Policy</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="We may update this Privacy Policy from time to time. Any changes will be posted on this page with an updated revision date." data-lang-ja="本プライバシーポリシーは随時更新されることがあります。変更は本ページに更新日とともに掲載されます。">We may update this Privacy Policy from time to time. Any changes will be posted on this page with an updated revision date.</p>
|
||||
</div>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title" data-lang-en="Contact" data-lang-ja="お問い合わせ">Contact</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="If you have any questions about this Privacy Policy, please contact the developer." data-lang-ja="本プライバシーポリシーについてご質問がある場合は、開発者にお問い合わせください。">If you have any questions about this Privacy Policy, please contact the developer.</p>
|
||||
<p class="subpage-section-text"><a href="https://github.com/syui" target="_blank" rel="noopener">https://github.com/syui</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
!function(){var l=localStorage.getItem('preferred-lang')||'en',d=document,lb=d.getElementById('lang-tab'),ld=d.getElementById('lang-dropdown'),mb=d.getElementById('menu-btn'),md=d.getElementById('menu-dropdown');function a(g){d.querySelectorAll('[data-lang-en]').forEach(function(e){var t=e.getAttribute('data-lang-'+g);if(t)e.innerHTML=t});ld.querySelectorAll('.lang-option').forEach(function(o){o.classList.toggle('selected',o.dataset.lang===g)})}lb.onclick=function(e){e.stopPropagation();ld.classList.toggle('show');md.classList.remove('show')};ld.querySelectorAll('.lang-option').forEach(function(o){o.onclick=function(e){e.stopPropagation();l=o.dataset.lang||'en';localStorage.setItem('preferred-lang',l);a(l);ld.classList.remove('show')}});mb.onclick=function(e){e.stopPropagation();md.classList.toggle('show');ld.classList.remove('show')};d.onclick=function(){ld.classList.remove('show');md.classList.remove('show')};a(l)}()
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
rse/public/service/ai.syui.at.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
rse/public/service/ai.syui.card.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
rse/public/service/ai.syui.rse.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
108
rse/public/support/index.html
Normal file
@@ -0,0 +1,108 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="icon" href="/icon/ai.svg" type="image/svg+xml">
|
||||
<title>Support | Airse</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&family=Space+Mono:wght@400&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
:root{--c-bg:#f5f5f8;--c-text:#1a1a2e;--c-accent:#3a7ca5;--c-accent2:#6a5acd;--c-dim:#8888a0;--f-d:'Orbitron',sans-serif;--f-b:'Space Mono',monospace}
|
||||
html,body{width:100%;height:100%;background:var(--c-bg);color:var(--c-text);font-size:calc(1rem + 3px)}
|
||||
.site-header{position:fixed;top:0;left:0;width:100%;height:5rem;padding:0 2rem;display:flex;align-items:center;z-index:110;background:var(--c-bg)}
|
||||
.header-logo{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--c-text);margin-right:auto}
|
||||
.header-logo-icon{width:24px;height:24px}
|
||||
.header-logo-text{font-family:var(--f-d);font-weight:700;font-size:.85rem;letter-spacing:.1em}
|
||||
.site-footer{position:fixed;bottom:0;left:0;width:100%;padding:1.5rem 2rem 2.5rem;z-index:110;display:flex;flex-direction:column;align-items:center;background:var(--c-bg)}
|
||||
.footer-copy{font-family:var(--f-b);font-size:.6rem;letter-spacing:.1em;color:var(--c-dim)}
|
||||
.lang-selector{position:relative}
|
||||
.lang-btn{display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:6px;cursor:pointer;padding:6px;opacity:.4;transition:opacity .3s,background .3s}
|
||||
.lang-btn:hover{opacity:.9;background:rgba(26,26,46,.06)}
|
||||
.lang-icon{width:20px;height:20px}
|
||||
.lang-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);min-width:100px;overflow:hidden}
|
||||
.lang-dropdown.show{display:block}
|
||||
.lang-option{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;cursor:pointer;font-family:var(--f-b);font-size:.75rem;letter-spacing:.05em;transition:background .15s}
|
||||
.lang-option:hover{background:#f0f0f0}
|
||||
.lang-option.selected{background:linear-gradient(135deg,#f0f7ff,#e8f4ff)}
|
||||
.lang-check{width:18px;height:18px;border-radius:50%;border:2px solid #ccc;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .2s;color:transparent}
|
||||
.lang-option.selected .lang-check{background:var(--c-accent);border-color:var(--c-accent);color:#fff}
|
||||
.menu-selector{position:relative;margin-left:8px}
|
||||
.menu-btn{display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:6px;cursor:pointer;padding:6px;opacity:.4;transition:opacity .3s,background .3s}
|
||||
.menu-btn:hover{opacity:.9;background:rgba(26,26,46,.06)}
|
||||
.menu-icon{width:20px;height:20px}
|
||||
.menu-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);min-width:180px;overflow:hidden}
|
||||
.menu-dropdown.show{display:block}
|
||||
.menu-option{display:flex;align-items:center;padding:10px 14px;cursor:pointer;font-family:var(--f-b);font-size:.75rem;letter-spacing:.05em;transition:background .15s}
|
||||
.menu-option:hover{background:#f0f0f0}
|
||||
a.menu-option{text-decoration:none;color:inherit}
|
||||
.menu-option-active{background:linear-gradient(135deg,#f0f7ff,#e8f4ff)}
|
||||
.page{position:fixed;top:5rem;left:0;width:100%;height:calc(100% - 5rem);z-index:10;display:flex;flex-direction:column;align-items:center;background:var(--c-bg);justify-content:flex-start;overflow-y:auto}
|
||||
.subpage-content{width:100%;max-width:640px;margin:0 auto;padding:4rem 2rem 6rem}
|
||||
.subpage-heading{font-family:var(--f-d);font-weight:700;font-size:clamp(1rem,2.5vw,1.4rem);letter-spacing:.1em;color:var(--c-text);margin-bottom:.8rem}
|
||||
.subpage-section{margin-top:2.5rem}
|
||||
.subpage-section-title{font-family:var(--f-d);font-weight:700;font-size:clamp(.85rem,1.8vw,1.1rem);letter-spacing:.1em;color:var(--c-text);margin-bottom:.8rem}
|
||||
.subpage-section-line{width:clamp(40px,8vw,80px);height:1px;background:linear-gradient(90deg,var(--c-accent),var(--c-accent2),transparent);margin-bottom:1rem}
|
||||
.subpage-section-text{font-family:var(--f-b);font-size:clamp(.65rem,1.1vw,.8rem);line-height:2;letter-spacing:.05em;color:rgba(26,26,46,.6)}
|
||||
.subpage-section-text a{color:var(--c-accent);text-decoration:none;word-break:break-all}
|
||||
.subpage-section-text a:hover{text-decoration:underline}
|
||||
@media(max-width:768px){.site-header{padding:.8rem 1rem}.site-footer{padding:1rem 1rem 1.5rem}}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header class="site-header">
|
||||
<a href="/" class="header-logo">
|
||||
<img src="/icon/ai.svg" alt="Airse" class="header-logo-icon">
|
||||
<span class="header-logo-text">Airse</span>
|
||||
</a>
|
||||
<div class="lang-selector">
|
||||
<button type="button" class="lang-btn" id="lang-tab">
|
||||
<img src="/icon/language.svg" alt="Lang" class="lang-icon">
|
||||
</button>
|
||||
<div class="lang-dropdown" id="lang-dropdown">
|
||||
<div class="lang-option selected" data-lang="en"><span class="lang-name">EN</span><span class="lang-check">✓</span></div>
|
||||
<div class="lang-option" data-lang="ja"><span class="lang-name">JA</span><span class="lang-check">✓</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-selector">
|
||||
<button type="button" class="menu-btn" id="menu-btn">
|
||||
<img src="/icon/menu.svg" alt="Menu" class="menu-icon">
|
||||
</button>
|
||||
<div class="menu-dropdown" id="menu-dropdown">
|
||||
<a href="/" class="menu-option"><span class="menu-option-text">Airse</span></a>
|
||||
<a href="/account" class="menu-option"><span class="menu-option-text" data-lang-en="Account" data-lang-ja="アカウント">Account</span></a>
|
||||
<a href="/privacy" class="menu-option"><span class="menu-option-text" data-lang-en="Privacy" data-lang-ja="プライバシー">Privacy</span></a>
|
||||
<a href="/terms" class="menu-option"><span class="menu-option-text" data-lang-en="Terms" data-lang-ja="利用規約">Terms</span></a>
|
||||
<a href="/support" class="menu-option menu-option-active"><span class="menu-option-text" data-lang-en="Support" data-lang-ja="サポート">Support</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<footer class="site-footer"><div class="footer-copy">©syui</div></footer>
|
||||
|
||||
<div class="page">
|
||||
<div class="subpage-content">
|
||||
<h1 class="subpage-heading" data-lang-en="Support" data-lang-ja="サポート">Support</h1>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="If you have questions, feedback, or need help with Airse, please reach out through the following channels." data-lang-ja="Airseについてのご質問、フィードバック、サポートが必要な場合は、以下からご連絡ください。">If you have questions, feedback, or need help with Airse, please reach out through the following channels.</p>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title">GitHub</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text" data-lang-en="Source code and issue tracker." data-lang-ja="ソースコードとイシュートラッカー。">Source code and issue tracker.</p>
|
||||
<p class="subpage-section-text"><a href="https://github.com/syui" target="_blank" rel="noopener">https://github.com/syui</a></p>
|
||||
</div>
|
||||
<div class="subpage-section">
|
||||
<h2 class="subpage-section-title">Bluesky</h2>
|
||||
<div class="subpage-section-line"></div>
|
||||
<p class="subpage-section-text"><a href="https://bsky.app/profile/syui.ai" target="_blank" rel="noopener">@syui.ai</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
!function(){var l=localStorage.getItem('preferred-lang')||'en',d=document,lb=d.getElementById('lang-tab'),ld=d.getElementById('lang-dropdown'),mb=d.getElementById('menu-btn'),md=d.getElementById('menu-dropdown');function a(g){d.querySelectorAll('[data-lang-en]').forEach(function(e){var t=e.getAttribute('data-lang-'+g);if(t)e.innerHTML=t});ld.querySelectorAll('.lang-option').forEach(function(o){o.classList.toggle('selected',o.dataset.lang===g)})}lb.onclick=function(e){e.stopPropagation();ld.classList.toggle('show');md.classList.remove('show')};ld.querySelectorAll('.lang-option').forEach(function(o){o.onclick=function(e){e.stopPropagation();l=o.dataset.lang||'en';localStorage.setItem('preferred-lang',l);a(l);ld.classList.remove('show')}});mb.onclick=function(e){e.stopPropagation();md.classList.toggle('show');ld.classList.remove('show')};d.onclick=function(){ld.classList.remove('show');md.classList.remove('show')};a(l)}()
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
99
rse/public/terms/index.html
Normal file
@@ -0,0 +1,99 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="icon" href="/icon/ai.svg" type="image/svg+xml">
|
||||
<title>Terms | Airse</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&family=Space+Mono:wght@400&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
:root{--c-bg:#f5f5f8;--c-text:#1a1a2e;--c-accent:#3a7ca5;--c-accent2:#6a5acd;--c-dim:#8888a0;--f-d:'Orbitron',sans-serif;--f-b:'Space Mono',monospace}
|
||||
html,body{width:100%;height:100%;background:var(--c-bg);color:var(--c-text);font-size:calc(1rem + 3px)}
|
||||
.site-header{position:fixed;top:0;left:0;width:100%;height:5rem;padding:0 2rem;display:flex;align-items:center;z-index:110;background:var(--c-bg)}
|
||||
.header-logo{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--c-text);margin-right:auto}
|
||||
.header-logo-icon{width:24px;height:24px}
|
||||
.header-logo-text{font-family:var(--f-d);font-weight:700;font-size:.85rem;letter-spacing:.1em}
|
||||
.site-footer{position:fixed;bottom:0;left:0;width:100%;padding:1.5rem 2rem 2.5rem;z-index:110;display:flex;flex-direction:column;align-items:center;background:var(--c-bg)}
|
||||
.footer-copy{font-family:var(--f-b);font-size:.6rem;letter-spacing:.1em;color:var(--c-dim)}
|
||||
.lang-selector{position:relative}
|
||||
.lang-btn{display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:6px;cursor:pointer;padding:6px;opacity:.4;transition:opacity .3s,background .3s}
|
||||
.lang-btn:hover{opacity:.9;background:rgba(26,26,46,.06)}
|
||||
.lang-icon{width:20px;height:20px}
|
||||
.lang-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);min-width:100px;overflow:hidden}
|
||||
.lang-dropdown.show{display:block}
|
||||
.lang-option{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;cursor:pointer;font-family:var(--f-b);font-size:.75rem;letter-spacing:.05em;transition:background .15s}
|
||||
.lang-option:hover{background:#f0f0f0}
|
||||
.lang-option.selected{background:linear-gradient(135deg,#f0f7ff,#e8f4ff)}
|
||||
.lang-check{width:18px;height:18px;border-radius:50%;border:2px solid #ccc;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .2s;color:transparent}
|
||||
.lang-option.selected .lang-check{background:var(--c-accent);border-color:var(--c-accent);color:#fff}
|
||||
.menu-selector{position:relative;margin-left:8px}
|
||||
.menu-btn{display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:6px;cursor:pointer;padding:6px;opacity:.4;transition:opacity .3s,background .3s}
|
||||
.menu-btn:hover{opacity:.9;background:rgba(26,26,46,.06)}
|
||||
.menu-icon{width:20px;height:20px}
|
||||
.menu-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);min-width:180px;overflow:hidden}
|
||||
.menu-dropdown.show{display:block}
|
||||
.menu-option{display:flex;align-items:center;padding:10px 14px;cursor:pointer;font-family:var(--f-b);font-size:.75rem;letter-spacing:.05em;transition:background .15s}
|
||||
.menu-option:hover{background:#f0f0f0}
|
||||
a.menu-option{text-decoration:none;color:inherit}
|
||||
.menu-option-active{background:linear-gradient(135deg,#f0f7ff,#e8f4ff)}
|
||||
.page{position:fixed;top:5rem;left:0;width:100%;height:calc(100% - 5rem);z-index:10;display:flex;flex-direction:column;align-items:center;background:var(--c-bg);justify-content:flex-start;overflow-y:auto}
|
||||
.subpage-content{width:100%;max-width:640px;margin:0 auto;padding:4rem 2rem 6rem}
|
||||
.subpage-heading{font-family:var(--f-d);font-weight:700;font-size:clamp(1rem,2.5vw,1.4rem);letter-spacing:.1em;color:var(--c-text);margin-bottom:.8rem}
|
||||
.subpage-section-line{width:clamp(40px,8vw,80px);height:1px;background:linear-gradient(90deg,var(--c-accent),var(--c-accent2),transparent);margin-bottom:1rem}
|
||||
.subpage-list{list-style:none;margin-top:1.5rem;display:flex;flex-direction:column;gap:1rem}
|
||||
.subpage-list-item{font-family:var(--f-b);font-size:clamp(.65rem,1.1vw,.8rem);line-height:2;letter-spacing:.05em;color:rgba(26,26,46,.6);padding-left:1.2em;position:relative}
|
||||
.subpage-list-item::before{content:'';position:absolute;left:0;top:.85em;width:6px;height:6px;border-radius:50%;background:linear-gradient(135deg,var(--c-accent),var(--c-accent2))}
|
||||
@media(max-width:768px){.site-header{padding:.8rem 1rem}.site-footer{padding:1rem 1rem 1.5rem}}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header class="site-header">
|
||||
<a href="/" class="header-logo">
|
||||
<img src="/icon/ai.svg" alt="Airse" class="header-logo-icon">
|
||||
<span class="header-logo-text">Airse</span>
|
||||
</a>
|
||||
<div class="lang-selector">
|
||||
<button type="button" class="lang-btn" id="lang-tab">
|
||||
<img src="/icon/language.svg" alt="Lang" class="lang-icon">
|
||||
</button>
|
||||
<div class="lang-dropdown" id="lang-dropdown">
|
||||
<div class="lang-option selected" data-lang="en"><span class="lang-name">EN</span><span class="lang-check">✓</span></div>
|
||||
<div class="lang-option" data-lang="ja"><span class="lang-name">JA</span><span class="lang-check">✓</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-selector">
|
||||
<button type="button" class="menu-btn" id="menu-btn">
|
||||
<img src="/icon/menu.svg" alt="Menu" class="menu-icon">
|
||||
</button>
|
||||
<div class="menu-dropdown" id="menu-dropdown">
|
||||
<a href="/" class="menu-option"><span class="menu-option-text">Airse</span></a>
|
||||
<a href="/account" class="menu-option"><span class="menu-option-text" data-lang-en="Account" data-lang-ja="アカウント">Account</span></a>
|
||||
<a href="/privacy" class="menu-option"><span class="menu-option-text" data-lang-en="Privacy" data-lang-ja="プライバシー">Privacy</span></a>
|
||||
<a href="/terms" class="menu-option menu-option-active"><span class="menu-option-text" data-lang-en="Terms" data-lang-ja="利用規約">Terms</span></a>
|
||||
<a href="/support" class="menu-option"><span class="menu-option-text" data-lang-en="Support" data-lang-ja="サポート">Support</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<footer class="site-footer"><div class="footer-copy">©syui</div></footer>
|
||||
|
||||
<div class="page">
|
||||
<div class="subpage-content">
|
||||
<h1 class="subpage-heading" data-lang-en="Terms" data-lang-ja="利用規約">Terms</h1>
|
||||
<div class="subpage-section-line"></div>
|
||||
<ul class="subpage-list">
|
||||
<li class="subpage-list-item" data-lang-en="The service may be terminated at any time." data-lang-ja="サービスは終了することがあります。">The service may be terminated at any time.</li>
|
||||
<li class="subpage-list-item" data-lang-en="Game data may be lost." data-lang-ja="ゲームデータは失われることがあります。">Game data may be lost.</li>
|
||||
<li class="subpage-list-item" data-lang-en="Accounts created on syu.is may be lost." data-lang-ja="syu.isに作成されたアカウントは失われることがあります。">Accounts created on syu.is may be lost.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
!function(){var l=localStorage.getItem('preferred-lang')||'en',d=document,lb=d.getElementById('lang-tab'),ld=d.getElementById('lang-dropdown'),mb=d.getElementById('menu-btn'),md=d.getElementById('menu-dropdown');function a(g){d.querySelectorAll('[data-lang-en]').forEach(function(e){var t=e.getAttribute('data-lang-'+g);if(t)e.innerHTML=t});ld.querySelectorAll('.lang-option').forEach(function(o){o.classList.toggle('selected',o.dataset.lang===g)})}lb.onclick=function(e){e.stopPropagation();ld.classList.toggle('show');md.classList.remove('show')};ld.querySelectorAll('.lang-option').forEach(function(o){o.onclick=function(e){e.stopPropagation();l=o.dataset.lang||'en';localStorage.setItem('preferred-lang',l);a(l);ld.classList.remove('show')}});mb.onclick=function(e){e.stopPropagation();md.classList.toggle('show');ld.classList.remove('show')};d.onclick=function(){ld.classList.remove('show');md.classList.remove('show')};a(l)}()
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||