:root{
  --bg:#0B1020;--panel:#18233E;--panel2:#121A2C;--text:#F3F0E8;--sub:#BFC5D1;
  --muted:#8892A6;--gold:#C9B37E;--purple:#877BA8;--red:#A85B4C;--green:#7FA68D;
  --border:#2A344D;--danger:#B76363
}
*{box-sizing:border-box}
html{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic","Noto Sans JP",sans-serif}
body{margin:0;min-height:100vh;background:
radial-gradient(circle at top,rgba(135,123,168,.16),transparent 34%),
linear-gradient(180deg,#080C18 0%,#0B1020 50%,#121A2C 100%);overflow-x:hidden}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
#stars{position:fixed;inset:0;pointer-events:none;opacity:.45;background-image:
radial-gradient(circle at 15% 25%,#fff 0 1px,transparent 1.5px),
radial-gradient(circle at 75% 15%,#fff 0 1px,transparent 1.5px),
radial-gradient(circle at 45% 65%,#fff 0 1px,transparent 1.5px),
radial-gradient(circle at 85% 72%,#fff 0 1px,transparent 1.5px);
background-size:220px 220px,280px 280px,320px 320px,370px 370px}
.app-shell{position:relative;z-index:1;max-width:560px;margin:0 auto;padding:20px 20px calc(100px + env(safe-area-inset-bottom));min-height:100vh}
.screen{animation:fadeUp .45s ease}
.hero{min-height:82vh;display:flex;flex-direction:column;justify-content:center;text-align:center}
.logo-ring{width:148px;height:148px;border:1px solid rgba(201,179,126,.7);border-radius:50%;margin:0 auto 26px;display:grid;place-items:center;position:relative;box-shadow:0 0 50px rgba(135,123,168,.18)}
.logo-ring:before,.logo-ring:after{content:"";position:absolute;border-radius:50%;border:1px solid rgba(135,123,168,.35)}
.logo-ring:before{width:108px;height:108px}.logo-ring:after{width:72px;height:72px}
.logo-symbol{font-size:42px;color:var(--gold);text-shadow:0 0 18px rgba(201,179,126,.55)}
h1,h2,h3{font-family:"Yu Mincho","Hiragino Mincho ProN","Noto Serif JP",serif;font-weight:500;letter-spacing:.05em}
h1{font-size:34px;margin:0 0 16px}h2{font-size:26px;margin:0 0 20px}h3{font-size:19px;margin:0 0 10px}
.lead{font-size:20px;line-height:1.8;margin:0 0 18px}.sub{color:var(--sub);line-height:1.8}.small{font-size:13px;color:var(--muted);line-height:1.65}
.primary,.secondary,.ghost{width:100%;min-height:54px;border-radius:16px;padding:14px 18px;margin-top:14px}
.primary{background:var(--gold);color:#111827;border:0;font-weight:700;box-shadow:0 8px 24px rgba(201,179,126,.2)}
.secondary{background:transparent;color:var(--text);border:1px solid rgba(201,179,126,.55)}
.ghost{background:rgba(24,35,62,.5);color:var(--sub);border:1px solid var(--border)}
.topbar{display:flex;align-items:center;gap:12px;margin-bottom:24px}.topbar button{border:0;background:transparent;color:var(--gold);font-size:22px;padding:8px}.topbar h2{font-size:20px;margin:0;flex:1;text-align:center}
.card{background:rgba(24,35,62,.84);border:1px solid rgba(201,179,126,.18);border-radius:22px;padding:20px;margin:14px 0;box-shadow:0 16px 44px rgba(0,0,0,.16);backdrop-filter:blur(10px)}
.card strong{color:var(--gold)}.grid{display:grid;gap:12px}.grid.two{grid-template-columns:1fr 1fr}
label{display:block;margin:16px 0 7px;color:var(--sub);font-size:14px}
input,select,textarea{width:100%;border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:14px;padding:14px 15px;min-height:52px}
textarea{min-height:110px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(201,179,126,.45);border-color:var(--gold)}
.progress{display:flex;gap:8px;margin:6px 0 24px}.dot{height:6px;flex:1;border-radius:99px;background:var(--border)}.dot.on{background:var(--gold)}
.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:8px 11px;border:1px solid rgba(201,179,126,.28);border-radius:99px;color:var(--sub);font-size:13px}
.symbols{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.symbol{text-align:center}.symbol b{display:block;font-size:28px;margin-bottom:8px}
.score-ring{width:112px;height:112px;border-radius:50%;display:grid;place-items:center;margin:20px auto;background:conic-gradient(var(--gold) calc(var(--p)*1%),var(--border) 0);position:relative}
.score-ring:after{content:"";position:absolute;width:84px;height:84px;border-radius:50%;background:var(--bg)}.score-ring span{position:relative;z-index:1;font-size:24px;color:var(--gold)}
.chapter{display:flex;gap:14px;align-items:center}.chapter-num{font-family:serif;color:var(--gold);font-size:22px}.chapter-main{flex:1}.chapter p{margin:4px 0;color:var(--sub);font-size:14px}.chapter button{background:transparent;border:0;color:var(--gold);font-size:20px}
.quote{border-left:3px solid var(--gold);padding:4px 0 4px 16px;margin:20px 0;font-family:serif;font-size:20px;line-height:1.8}
.bottom-nav{position:fixed;z-index:5;left:0;right:0;bottom:0;display:flex;justify-content:center;background:rgba(8,12,24,.94);border-top:1px solid rgba(201,179,126,.18);padding-bottom:env(safe-area-inset-bottom)}
.bottom-nav button{width:min(25%,140px);border:0;background:transparent;color:var(--sub);padding:12px 4px 10px;font-size:19px}.bottom-nav span{display:block;font-size:11px;margin-top:4px}.bottom-nav button.active{color:var(--gold)}
.hidden{display:none!important}.error{color:#e5a0a0;font-size:13px;margin-top:6px}.toast{position:fixed;z-index:10;left:50%;bottom:96px;transform:translateX(-50%);background:#222d44;color:var(--text);border:1px solid var(--border);padding:12px 18px;border-radius:12px;opacity:0;pointer-events:none;transition:.25s}.toast.show{opacity:1}
.loading-rings{width:190px;height:190px;margin:70px auto 28px;position:relative}.loading-rings i{position:absolute;inset:0;border:1px solid var(--gold);border-radius:50%;animation:spin 7s linear infinite}.loading-rings i:nth-child(2){inset:22px;border-color:var(--purple);animation-direction:reverse;animation-duration:5s}.loading-rings i:nth-child(3){inset:44px;border-color:var(--red);animation-duration:4s}
.details summary{color:var(--gold);cursor:pointer;padding:8px 0}.details p{color:var(--sub);line-height:1.8}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(min-width:700px){.app-shell{padding-top:34px}.hero{min-height:76vh}}
