:root {
  --shell-bg: #060611;
  --shell-panel: rgba(14, 14, 32, .78);
  --shell-line: rgba(151, 112, 255, .18);
  --shell-line-strong: rgba(166, 121, 255, .36);
  --shell-text: #eeebf6;
  --shell-muted: #9690a4;
  --shell-purple: #9b63f4;
  --shell-cyan: #36d9ff;
}

html { background: var(--shell-bg); }
body { position: relative; isolation: isolate; color: var(--shell-text); background: radial-gradient(circle at 75% -10%, rgba(110, 53, 220, .18), transparent 35%), radial-gradient(circle at 10% 55%, rgba(42, 192, 230, .06), transparent 28%), var(--shell-bg); font-family: Kanit, "Segoe UI", "Noto Sans SC", system-ui, sans-serif; }
h1, h2, .policy-title, .panel-title { font-family: Orbitron, Kanit, "Segoe UI", sans-serif; }
/* One atmospheric glow; stars are rendered by void-effects.js. */
body::after {
  content: "";
  position: fixed;
  inset: -20vh -12vw;
  z-index: -1;
  pointer-events: none;
  opacity: .5;
  background: radial-gradient(circle at 12% 18%, rgba(88,28,235,.12), transparent 30%), radial-gradient(circle at 72% 43%, rgba(109,40,217,.1), transparent 29%), radial-gradient(circle at 32% 76%, rgba(130,27,255,.075), transparent 28%), radial-gradient(circle at 86% 8%, rgba(124,58,237,.07), transparent 24%);
  filter: blur(58px);
  animation: shellAtmosphere 18s ease-in-out infinite alternate;
}

.header { position: fixed; top: 16px; left: 50%; z-index: 1000; width: min(1180px, calc(100% - 32px)); min-height: 66px; padding: 9px 12px 9px 15px; border: 1px solid rgba(151,112,255,.2); border-radius: 20px; background: linear-gradient(105deg, rgba(10,7,23,.54), rgba(7,10,22,.38)); box-shadow: 0 18px 54px rgba(0,0,0,.22), inset 0 1px rgba(255,255,255,.045); backdrop-filter: blur(22px) saturate(145%); transform: translateX(-50%); }
.header::after { content: ""; position: absolute; left: 7%; right: 7%; bottom: -1px; height: 1px; opacity: .7; background: linear-gradient(90deg, transparent, #8a56ff, #41d9ff, transparent); }
.brand { gap: 11px; }
.brand img { width: 42px; height: 42px; padding: 6px; border: 1px solid rgba(161,118,255,.3); border-radius: 13px; background: linear-gradient(145deg, rgba(139,85,255,.18), rgba(39,175,223,.08)); }
.brand .name { color: #fff; font-size: .83rem; letter-spacing: .17em; }
.nav { gap: 2px; padding: 5px; border: 1px solid rgba(255,255,255,.05); border-radius: 14px; background: rgba(10,5,20,.24); backdrop-filter: blur(10px); }
.nav a { padding: 8px 11px; border-radius: 9px; color: #9892a7; font-size: .72rem; }
.nav a:hover { color: #fff; background: rgba(151,104,255,.1); }
.lang-select, .language-trigger { min-height: 42px; border: 1px solid rgba(255,255,255,.09); border-radius: 12px; color: #d8d3e3; background: rgba(255,255,255,.035); }
.policy-page .language-picker .lang-select { display: none !important; }
.header .btn-outline { min-height: 42px; border-color: rgba(153,112,255,.3); border-radius: 12px; background: rgba(129,73,235,.07); }
.mobile-menu-toggle { border-radius: 12px; }
.mobile-nav { position: fixed; top: 91px; left: 50%; z-index: 999; width: min(520px, calc(100% - 32px)); border: 1px solid var(--shell-line); border-radius: 18px; background: rgba(8,8,22,.97); box-shadow: 0 28px 70px rgba(0,0,0,.46); transform: translateX(-50%); }

.policy-shell { width: min(1180px, calc(100% - 36px)); padding-top: 124px; }
.policy-breadcrumb { margin-bottom: 27px; color: #746e80; font-size: .72rem; }
.policy-breadcrumb a { color: #a88bed; }
.policy-hero { position: relative; min-height: 360px; padding: 54px; overflow: hidden; border: 1px solid var(--shell-line); border-radius: 28px; background: radial-gradient(circle at 88% 16%, rgba(119,64,232,.3), transparent 30%), linear-gradient(145deg, rgba(20,19,44,.91), rgba(9,10,25,.82)); box-shadow: 0 34px 90px rgba(0,0,0,.32), inset 0 1px rgba(255,255,255,.045); }
.policy-hero::before { content: ""; position: absolute; inset: -50% auto auto -10%; width: 70%; height: 120%; border: 1px solid rgba(162,118,255,.13); border-radius: 50%; box-shadow: 0 0 70px rgba(114,61,226,.12); transform: rotate(-18deg); }
.policy-hero::after { content: "R"; position: absolute; right: 4%; bottom: -17%; color: rgba(255,255,255,.025); font-size: 19rem; font-weight: 1000; line-height: 1; }
.policy-kicker { color: #a47cf4; font-size: .66rem; font-weight: 900; letter-spacing: .18em; }
.policy-title { max-width: 820px; margin: 22px 0 17px; font-size: clamp(3.5rem, 8vw, 7.7rem); line-height: .84; letter-spacing: -.065em; }

@media (min-width: 769px) {
  html[lang="ja"] .policy-title { max-width: 1080px; font-size: clamp(3.5rem, 6.2vw, 6.2rem); letter-spacing: -.045em; }
}
.policy-intro { max-width: 650px; color: var(--shell-muted); line-height: 1.75; }
.policy-meta, .policy-switcher { position: relative; z-index: 1; }
.policy-meta-item, .policy-switcher a { border-color: rgba(255,255,255,.08); background: rgba(255,255,255,.025); }
.policy-switcher a[aria-current="page"] { color: #fff; border-color: rgba(158,111,255,.35); background: rgba(137,79,240,.13); }
.policy-layout { align-items: start; gap: 20px; margin-top: 22px; }
.policy-toc { top: 108px; padding: 22px; border: 1px solid var(--shell-line); border-radius: 20px; background: rgba(12,12,29,.7); backdrop-filter: blur(18px); }
.policy-toc-title { color: #cbc5d7; }
.policy-toc a { border-left-color: rgba(157,115,255,.18); color: #817b8d; }
.policy-toc a.active { color: #c6aaff; border-left-color: #9d6cf0; background: rgba(133,77,230,.08); }
.policy-article { position: relative; padding: 10px 38px 40px; overflow: hidden; border: 1px solid var(--shell-line); border-radius: 24px; background: linear-gradient(145deg, rgba(15,16,35,.76), rgba(9,10,24,.68)); box-shadow: 0 26px 70px rgba(0,0,0,.22); }
.policy-article::before { content: ""; position: absolute; left: 7%; right: 7%; top: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(156,108,255,.62), rgba(56,215,255,.2), transparent); }
.policy-content h2 { margin-top: 40px; color: #e7e2ef; font-size: 1.22rem; }
.policy-content p, .policy-content li { color: #9993a4; line-height: 1.78; }
.policy-content a { color: #b291f5; }
.policy-note { border-color: rgba(158,113,255,.2); border-radius: 14px; color: #777181; background: rgba(125,74,222,.055); }
.footer { position: relative; border-top-color: rgba(151,112,255,.12); background: linear-gradient(180deg, rgba(10,7,23,.18), rgba(6,6,17,.42)); backdrop-filter: blur(16px); }
.footer::before { content: ""; position: absolute; left: 10%; right: 10%; top: -1px; height: 1px; background: linear-gradient(90deg, transparent, rgba(151,105,255,.65), rgba(68,216,255,.18), transparent); }
.footer-line2 { color: #777180; }
.footer-nav a { color: #928ba0; }

body:not(.policy-page) .wrap { width: min(1120px, calc(100% - 32px)); padding-top: 128px; }


body:not(.policy-page) .page { min-height: calc(100vh - 170px); display: grid; grid-template-columns: minmax(0, min(740px, 100%)); place-content: center; place-items: center; }
body:not(.policy-page) .panel { position: relative; width: min(620px, 100%); padding: 38px; overflow: hidden; border: 1px solid var(--shell-line-strong); border-radius: 27px; background: radial-gradient(circle at 100% 0, rgba(123,68,240,.2), transparent 37%), linear-gradient(145deg, rgba(19,19,43,.92), rgba(8,9,23,.88)); box-shadow: 0 34px 95px rgba(0,0,0,.46), 0 0 70px rgba(103,52,209,.08), inset 0 1px rgba(255,255,255,.05); }
body:not(.policy-page) .panel { width: min(740px, 100%); }
body:not(.policy-page) .panel::before { content: ""; position: absolute; width: 420px; height: 170px; right: -150px; top: 82px; border: 1px solid rgba(157,112,255,.15); border-radius: 50%; transform: rotate(-23deg); box-shadow: 0 0 60px rgba(111,56,226,.1); }
body:not(.policy-page) .panel::after { content: "AUTH"; position: absolute; right: -18px; bottom: -20px; color: rgba(255,255,255,.022); font-size: 6rem; font-weight: 1000; letter-spacing: -.08em; }
body:not(.policy-page) .panel-top, body:not(.policy-page) .code, body:not(.policy-page) .hint, body:not(.policy-page) .barwrap, body:not(.policy-page) .field-label, body:not(.policy-page) input, body:not(.policy-page) .row, body:not(.policy-page) .status, body:not(.policy-page) .foot { position: relative; z-index: 1; }
body:not(.policy-page) .panel-title { font-size: .78rem; letter-spacing: .16em; text-transform: uppercase; }
body:not(.policy-page) .panel-title { gap: 16px; margin: 0; font-size: 1.12rem; }
body:not(.policy-page) .panel-title-logo { width: 58px; height: 58px; padding: 5px; border: 1px solid rgba(157,111,255,.3); border-radius: 15px; background: rgba(126,70,232,.12); }
body:not(.policy-page) .code { margin: 36px 0 5px; color: #f4f0ff; font-size: clamp(3.5rem, 10vw, 6.8rem); line-height: 1; letter-spacing: -.05em; text-shadow: 0 0 34px rgba(143,83,255,.32); }
body:not(.policy-page) .barwrap { border-color: rgba(157,112,255,.18); background: rgba(255,255,255,.035); }
body:not(.policy-page) .bar { background: linear-gradient(90deg, #7941df, #b66cff, #42d9ff); }
body:not(.policy-page) #secret { border-color: rgba(160,115,255,.26); border-radius: 14px; background: rgba(255,255,255,.032); box-shadow: none; }
body:not(.policy-page) #secret:focus { border-color: rgba(174,127,255,.65); box-shadow: 0 0 0 4px rgba(131,74,235,.11); }
body:not(.policy-page) .auth-local-note { position: relative; z-index: 1; margin: 10px 2px 20px; color: #767080; font-size: .69rem; line-height: 1.55; }
body:not(.policy-page) .auth-intro { position: relative; z-index: 1; max-width: 520px; margin: 12px 0 0; color: #918b9d; font-size: .8rem; line-height: 1.6; }
body:not(.policy-page) .row button { min-height: 48px; border-radius: 13px; }
body:not(.policy-page) .row .primary { border-color: transparent; color: #fff; background: linear-gradient(110deg, #7240dd, #b350ed); box-shadow: 0 14px 36px rgba(112,55,215,.25); }
body:not(.policy-page) .row button { transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease; }
body:not(.policy-page) .row button:hover { transform: translateY(-2px); }
body:not(.policy-page) .foot { color: #686271; }

@media (max-width: 760px) {
  .header { top: 10px; width: calc(100% - 20px); min-height: 60px; padding: 8px 10px; border-radius: 17px; }
  .brand img { width: 38px; height: 38px; }
  .header-actions { margin-left: auto; }
  .header-actions .btn { display: none; }
  .mobile-menu-toggle { width: 42px; height: 42px; border: 1px solid rgba(255,255,255,.08); background: rgba(255,255,255,.035); }
  .mobile-nav { top: 78px; width: calc(100% - 20px); }
  .policy-shell { width: min(100% - 20px, 1180px); padding-top: 100px; }
  .policy-hero { min-height: 0; padding: 36px 22px; border-radius: 22px; }
  .policy-title { font-size: clamp(3.1rem, 16vw, 5.4rem); }
  .policy-layout { display: block; }
  .policy-toc { position: static; margin-bottom: 14px; }
  .policy-article { padding: 4px 20px 28px; border-radius: 20px; }
  body:not(.policy-page) .wrap { width: calc(100% - 20px); padding-top: 99px; }
  body:not(.policy-page) .panel { padding: 26px 20px; border-radius: 22px; }
  body:not(.policy-page) .panel-title { gap: 11px; font-size: .94rem; }
  body:not(.policy-page) .panel-title-logo { width: 46px; height: 46px; }
  body:not(.policy-page) .code { font-size: clamp(3rem, 18vw, 5rem); }
}


@keyframes shellAtmosphere { from { transform: translate3d(-1.5%,0,0) scale(1); } to { transform: translate3d(1.5%,1%,0) scale(1.035); } }

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; } }
