/* Minimal helpers (Tailwindがある前提の上乗せ) */
.btn-primary{background:#4f46e5;color:#fff;padding:.6rem .9rem;border-radius:.6rem;border:1px solid #4338ca;box-shadow:0 1px 2px rgb(0 0 0 / .06)}
.btn-primary:hover{background:#4338ca}
.btn-secondary{background:white;color:#111827;padding:.55rem .85rem;border-radius:.6rem;border:1px solid #e5e7eb;box-shadow:0 1px 2px rgb(0 0 0 / .04)}
.btn-ghost{background:transparent;color:#374151;padding:.5rem .8rem;border-radius:.6rem;border:1px dashed #cbd5e1}
.btn-lg{padding:.75rem 1rem}

.input{width:100%;border:1px solid #e5e7eb;border-radius:.6rem;padding:.6rem .8rem}
.input:focus{outline:none;box-shadow:0 0 0 6px rgba(99,102,241,.12);border-color:#6366f1}

.form-hint{margin-top:.5rem;font-size:.85rem;color:#64748b}

.result-card{background:white;border:1px solid #e5e7eb;border-radius:.75rem;padding:1rem;position:relative;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.result-card .rank-badge{position:absolute;top:.5rem;right:.5rem;background:#111827;color:white;border-radius:.5rem;padding:.15rem .4rem;font-size:.75rem}
.result-card.blur::after{content:"Hidden — unlock for free";position:absolute;inset:0;background:rgba(255,255,255,.75);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;font-weight:700;color:#334155;border-radius:.75rem}

.progress-wrap{height:6px;background:#eef2ff}
.progress-bar{height:100%;background:#22c55e;width:0;transition:width .2s ease-in}

.toast{background:rgba(17,24,39,.95);color:#fff;border-radius:.5rem;padding:.6rem .8rem;box-shadow:0 5px 15px rgba(0,0,0,.15)}

/* Anchor sections should not hide under the sticky header */
.anchor-section { scroll-margin-top: 84px; }