:root{--bg:linear-gradient(180deg, #ebf6ff 0%, #f0eefe 50%, #fceef7 100%);--bg-soft:#f4f9fe;--bg-card:#ffffffc7;--bg-card-solid:#fff;--border:#1450821a;--border-strong:#1450822e;--text:#080d12;--text-soft:#4b5256;--text-mute:#7f8b91;--accent:#099bff;--accent-soft:#def0ff;--accent-ink:#0571bf;--accent-pink:#ff7ab6;--accent-pink-soft:#ffe3f0;--accent-yellow:#ffd661;--accent-yellow-soft:#fff4d1;--accent-green:#2bd49e;--accent-green-soft:#d6f8ec;--ok:#2bd49e;--ok-soft:#d6f8ec;--warn:#ffb74d;--warn-soft:#fff0da;--bad:#ff5a6e;--bad-soft:#ffe1e5;--shadow-sm:0 1px 2px #143c6e0d, 0 1px 1px #143c6e08;--shadow-md:0 8px 22px #143c6e14, 0 2px 6px #143c6e0a;--shadow-lg:0 24px 60px #143c6e1f, 0 6px 14px #143c6e0f;--shadow-pop:0 14px 34px #099bff38;--radius-sm:10px;--radius-md:14px;--radius-lg:22px;--radius-xl:28px;--radius-pill:999px;--font-jp:"Noto Sans JP", "Hiragino Sans", "Yu Gothic", sans-serif;--font-en:"Inter", "Noto Sans JP", sans-serif;--font-mono:"JetBrains Mono", "SF Mono", monospace}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--font-jp);-webkit-font-smoothing:antialiased;font-feature-settings:"palt";background-attachment:fixed;margin:0;padding:0;line-height:1.6}button{cursor:pointer;font-family:inherit}input{font-family:inherit}a{color:inherit;text-decoration:none}.grid-bg{background-image:radial-gradient(circle at 1px 1px,#099bff1a 1px,#0000 0);background-size:26px 26px}.blob{filter:blur(60px);opacity:.55;pointer-events:none;border-radius:50%;animation:14s ease-in-out infinite float;position:absolute}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes float{0%,to{transform:translate(0)}50%{transform:translate(20px,-28px)}}@keyframes wiggle{0%,to{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}@keyframes drawIn{0%{stroke-dashoffset:200px;opacity:0}to{stroke-dashoffset:0;opacity:1}}
