html {
  font-size: 14px;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  margin-bottom: 60px;
}

/* ---- Base ---- */
:root{
  --brand: #2563eb;          /* メイン色 */
  --brand-2: #7c3aed;        /* サブ色 */
  --bg: #f6f8fb;             /* 背景 */
  --card: #ffffff;           /* カード背景 */
  --text: #0f172a;           /* 文字 */
  --muted: #64748b;          /* 補助文字 */
  --radius: 14px;
}

body{
  background: var(--bg);
  color: var(--text);
}

/* ---- Section spacing ---- */
.page-wrap{
  padding: 32px 0;
}

/* ---- Card ---- */
.card{
  border: 0;
  border-radius: var(--radius);
  background: var(--card);
  box-shadow: 0 10px 30px rgba(2, 6, 23, .06);
}
.card-header{
  background: transparent;
  border-bottom: 1px solid rgba(15, 23, 42, .06);
  font-weight: 700;
}

/* ---- Button ---- */
.btn{
  border-radius: 12px;
  padding: 10px 14px;
  font-weight: 700;
}
.btn-primary{
  background: linear-gradient(135deg, var(--brand), var(--brand-2));
  border: 0;
  box-shadow: 0 10px 20px rgba(37, 99, 235, .18);
}
.btn-primary:hover{
  filter: brightness(1.03);
  transform: translateY(-1px);
}

/* ---- Form ---- */
.form-control, .form-select{
  border-radius: 12px;
  border: 1px solid rgba(15, 23, 42, .10);
  padding: 10px 12px;
}
.form-control:focus, .form-select:focus{
  border-color: rgba(37, 99, 235, .45);
  box-shadow: 0 0 0 .2rem rgba(37, 99, 235, .15);
}

/* ---- Navbar ---- */
.navbar{
  backdrop-filter: blur(10px);
  background: rgba(255,255,255,.75) !important;
  border-bottom: 1px solid rgba(15, 23, 42, .06);
}

/* ---- Small helpers ---- */
.badge-primary {
  display: inline-block;
  background-color: #2563eb;
  color: #ffffff;
  border-radius: 999px;
  padding: 4px 10px;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  box-shadow: 0 1px 2px rgba(0,0,0,0.15);
}

.badge-secondary {
  display: inline-block;
  background-color: #fb923c;
  color: #ffffff;
  border-radius: 999px;
  padding: 4px 10px;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  box-shadow: 0 1px 2px rgba(0,0,0,0.15);
}


.text-muted{ color: var(--muted) !important; }

.logo-text-wrap {
    line-height: 1;          /* 下端を揃えやすくする */
}

.logo-text {
    font-size: 1.25rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: #212529;
    white-space: nowrap;
}

.logo-q {
    font-weight: 800;
    color: #ff7a00;
    margin-right: 1px;
}

.logo-sub {
    font-size: 0.75rem;
    color: #6c757d;
    white-space: nowrap;
    padding-bottom: 0.05rem; /* 見た目微調整（重要） */
}

@keyframes popIn {
    0% { transform: scale(0.8); opacity: 0; }
    60% { transform: scale(1.05); }
    100% { transform: scale(1); opacity: 1; }
}

#goal-clear-banner {
    animation: popIn 0.4s ease-out;
}

#stamp-toast.is-show {
    animation: popIn 0.25s ease-out;
}