:root{--color-bg:#FAFBFF;--color-surface:#FFFFFF;--color-primary:#8E9CFF;--color-pink:#FF9FC5;--color-aqua:#79DCE8;--color-mint:#83D9BA;--color-yellow:#FFD36E;--color-text:#343746;--color-muted:#777B8C;--color-border:#E6E9F5;--color-error:#F29BA2;--ink-muted:#616575;--primary-ink:#4c4896;--radius-sm:12px;--radius:24px;--radius-pill:99px;--shadow:0 10px 32px #626bc009;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--font-sm:.875rem;--font-base:1rem;--font-lg:1.25rem;--font-xl:1.8rem;--font-hero:clamp(2.1rem,4.5vw,3.6rem)}
*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:"Yu Gothic UI","Hiragino Kaku Gothic ProN",Meiryo,sans-serif;font-size:var(--font-base);line-height:1.8}button,input,select{font:inherit;color:inherit}button,a,input,select{touch-action:manipulation}a{color:var(--primary-ink);text-decoration:none}button{cursor:pointer}a:hover{text-decoration:underline}button:disabled{opacity:.55;cursor:default}:focus-visible{outline:3px solid #625acd;outline-offset:4px}h1,h2,h3,p{margin:0 0 1rem}h1{font-size:2rem;line-height:1.5}h2{font-size:var(--font-lg)}small,.fine{font-size:var(--font-sm);color:var(--ink-muted)}.muted{color:var(--ink-muted)}.header{max-width:1200px;margin:auto;display:flex;justify-content:space-between;align-items:center;padding:24px 32px;gap:24px}.brand{display:flex;align-items:center;gap:12px;color:var(--color-text);font-size:1.1rem;font-weight:800}.brand small{display:block;font-size:.65rem;letter-spacing:.14em}.header nav{display:flex;gap:24px}.header nav a{font-size:.9rem;min-height:44px;display:flex;align-items:center}main{max-width:1080px;min-height:65vh;margin:auto;padding:24px 32px 60px}.hero{display:grid;grid-template-columns:1.45fr 1fr;align-items:center;gap:32px;padding:44px 0 60px}.hero h1{font-size:var(--font-hero);letter-spacing:.01em;line-height:1.55;font-weight:800}.hero-copy{color:var(--ink-muted);line-height:2}.eyebrow{color:var(--primary-ink);font-weight:700;font-size:.85rem;letter-spacing:.08em}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 23px;border:1px solid var(--color-border);border-radius:var(--radius-pill);font-weight:700;font-size:.95rem;line-height:1.5;text-align:center;background:var(--color-surface);color:var(--color-text);text-decoration:none}.button:hover{transform:translateY(-1px);text-decoration:none;background:#f0f0ff}.button.primary{background:#e1e4ff;border-color:#c1c8ff;color:#39316f;box-shadow:0 5px 15px #a1a9ef1c}.button.primary:hover{background:#d4d9ff}.button.text-button{background:transparent;border-color:transparent;color:var(--primary-ink);padding:8px}.button.danger{background:#fff0f1;border-color:var(--color-error)}.button + .button{margin-left:8px}.hero .button{margin:6px 0 12px;min-height:56px;padding:12px 30px}.cat{min-height:280px;display:flex;align-items:center;justify-content:center;flex-direction:column;font-size:9rem;background:radial-gradient(ellipse,#f4eaff 0,#eef4ff88 45%,transparent 69%);position:relative;line-height:1.4}.cat span{font-size:.8rem;color:var(--primary-ink);background:white;border:1px solid var(--color-border);padding:6px 16px;border-radius:99px;transform:rotate(-4deg)}.cat.small{font-size:3rem;min-height:90px}.cat.small span{display:none}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:28px;margin-bottom:20px;min-width:0}.grid>.card{margin:0}.unit-card{display:block;border:1px solid var(--color-border);border-radius:var(--radius);padding:30px;color:var(--color-text);transition:transform .15s}.unit-card:hover{transform:translateY(-3px);text-decoration:none}.lavender{background:linear-gradient(130deg,#eff0ff,#f8f8ff)}.pink{background:linear-gradient(130deg,#fff0f5,#fff9fc)}.unit-icon{display:block;font-family:Georgia,serif;font-size:1.5rem;color:#6660aa;margin-bottom:20px}.unit-card h2{font-size:1.6rem}.unit-card p{font-size:.9rem;color:var(--ink-muted)}.tag{display:inline-block;border-radius:99px;padding:4px 12px;background:#fff9;border:1px solid var(--color-border);font-size:.8rem;color:var(--ink-muted)}.section-label{display:flex;align-items:center;justify-content:space-between;margin:0 0 18px}.section-label h2{margin:0}.secondary-grid{margin-top:24px}.news{margin:40px 0 10px;padding-top:24px;border-top:1px solid var(--color-border)}.news h2{font-size:.8rem;letter-spacing:.15em}.news p{font-size:.85rem}.page-heading{margin:14px 0 30px}.about-layout{display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:30px}.about-copy{white-space:pre-line;line-height:2.1;padding:20px;font-size:1.05rem}footer{border-top:1px solid var(--color-border);max-width:1080px;margin:auto;padding:30px 32px;display:flex;flex-wrap:wrap;gap:16px;font-size:.8rem;color:var(--ink-muted)}.bottom-nav{display:none}.skip{position:absolute;top:-100px;left:10px;z-index:10;background:white;padding:12px}.skip:focus{top:10px}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.actions .button{margin:0}.field{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:.9rem;margin-bottom:16px}input,select{min-height:46px;border:1px solid #c4c8db;border-radius:var(--radius-sm);padding:8px 10px;background:white;max-width:100%;min-width:0}input[type=number]{width:100%}.practicing main{max-width:820px}.practicing .bottom-nav,.practicing footer,.practicing .header nav{display:none}.math{font-family:Cambria,"Times New Roman",serif;line-height:1.8;font-size:1.7rem;overflow-wrap:anywhere}.math sup{font-size:.65em}.prompt-math{padding:25px 0;margin:8px 0 16px}.feedback{padding:18px;border-radius:16px;background:#f0f8f5;margin-top:16px}.feedback.wrong{background:#fff2f4}.progress{height:7px;border-radius:9px;background:#e9eafa;margin:18px 0}.progress span{display:block;background:var(--color-primary);height:7px;border-radius:9px}.practice-meta{display:flex;justify-content:space-between;gap:12px;align-items:center}.builder{min-width:0}.term{display:flex;gap:8px;align-items:end;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--color-border)}.term .field{width:74px;flex:1 1 64px;max-width:110px;margin:0;font-size:.75rem}.term .button{padding:8px 12px;margin:0}.builder>.button{margin-top:12px}.factor{border:1px solid var(--color-border);border-radius:16px;padding:16px;margin:16px 0;background:#fafbff}.factor legend{font-weight:700;padding:0 8px}.preview{min-height:50px;margin:16px 0;background:#f7f8fe;border-radius:12px;padding:8px 14px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:25px}.stat{background:white;border:1px solid var(--color-border);border-radius:18px;padding:18px;text-align:center}.stat strong{display:block;font-size:1.6rem;color:var(--primary-ink)}.stat span{font-size:.8rem;color:var(--ink-muted)}.list-row{display:flex;justify-content:space-between;gap:16px;align-items:center;border-bottom:1px solid var(--color-border);padding:16px 0;flex-wrap:wrap}.solution-step{padding:18px 0;border-bottom:1px solid var(--color-border)}.solution-step .math{font-size:1.35rem}.score{font-size:3rem;color:var(--primary-ink);font-weight:800}.notice{padding:12px 18px;border-radius:12px;background:#fff8e9;color:#63512b;margin-bottom:16px}.expr-controls{display:flex;gap:8px;flex-wrap:wrap}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}body.large-text{font-size:18px}body.theme-mint{--color-bg:#f7fffc;--color-primary:#83D9BA}dialog{max-width:min(500px,90vw);border:1px solid var(--color-border);border-radius:24px;padding:28px}dialog::backdrop{background:#34374655}
@media(max-width:767px){.header{padding:18px 20px}.brand{font-size:.95rem}.brand small{font-size:.55rem}.header nav a:not(:last-child){display:none}.header nav{gap:0}main{padding:12px 20px 32px}.hero{grid-template-columns:1fr;gap:0;padding:20px 0 28px;position:relative}.hero h1{font-size:clamp(1.95rem,7.2vw,2.6rem);position:relative;z-index:1}.hero .cat{position:absolute;right:-4px;bottom:27px;min-height:120px;width:120px;font-size:4.6rem;pointer-events:none}.hero .cat span{display:none}.hero-copy{font-size:.9rem}.hero .button{font-size:.9rem;padding:12px 22px}.grid{grid-template-columns:1fr;gap:16px}.unit-card{padding:24px}.unit-icon{float:right;font-size:1.15rem;margin:4px 0 12px 12px}.unit-card h2{font-size:1.35rem}.unit-card p{clear:both}.section-label{align-items:start;gap:8px}.section-label h2{font-size:1rem}.section-label .button{font-size:.8rem;min-height:44px;padding:0 4px}.card{padding:22px 18px}.secondary-grid{margin-top:16px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;background:#ffffffef;border-top:1px solid var(--color-border);padding:7px 8px max(7px,env(safe-area-inset-bottom));z-index:5;backdrop-filter:blur(14px)}.bottom-nav a{display:flex;align-items:center;justify-content:center;flex-direction:column;line-height:1.4;min-width:60px;min-height:48px;font-size:1.25rem;color:var(--ink-muted)}.bottom-nav span{font-size:.7rem}.bottom-nav a[aria-current=page]{color:var(--primary-ink);background:#eff0ff;border-radius:12px}footer{padding:24px 20px 105px;gap:8px}.about-layout{grid-template-columns:1fr}.about-copy{padding:0;font-size:.94rem}.about-layout .cat{font-size:6rem;min-height:200px}.stats{grid-template-columns:repeat(2,1fr)}.math{font-size:1.4rem}.term{gap:6px}.term .field{flex-basis:56px}.term .button{padding:8px;min-width:44px}.factor{padding:12px 10px}.practice-meta{font-size:.85rem}.practicing main{padding-top:0}.practicing .header{padding:14px 20px}.page-heading h1{font-size:1.65rem}.list-row>.button{width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
progress{display:block;width:100%;height:8px;border:0;border-radius:8px;margin:18px 0 24px;background:#e9eafa}progress::-webkit-progress-bar{background:#e9eafa;border-radius:8px}progress::-webkit-progress-value{background:var(--color-primary);border-radius:8px}.practice-question{font-size:1.05rem;font-weight:600}.next-actions{margin-top:24px}[hidden]{display:none!important}.solution{margin-top:24px;padding:24px;background:white;border:1px solid var(--color-border);border-radius:24px}.solution .math{font-size:1.15rem}
main:focus{outline:none}html.large-text{font-size:18px}footer a{display:inline-flex;align-items:center;min-height:44px}input,select{font-size:1rem} .term .field{font-size:.8rem}
