/* 鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲 閬僵 & 寮圭獥 鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲 */
.overlay { position:fixed; inset:0; background:rgba(0,0,0,0); pointer-events:none; transition:background 0.4s; z-index:90; }
.overlay.show { background:rgba(0,0,0,0.4); pointer-events:all; }
.modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.7); display:none; justify-content:center; align-items:center; z-index:200; backdrop-filter:blur(8px); }
.modal-overlay.show { display:flex; animation:fadeIn 0.3s; }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
.modal-content {
  background:linear-gradient(135deg,var(--bg-card),#1a1a3e);
  border-radius:24px; padding:clamp(30px,6vw,50px); text-align:center;
  border:2px solid var(--gold); box-shadow:0 20px 60px rgba(255,215,0,0.2);
  animation:popIn 0.4s cubic-bezier(0.68,-0.55,0.27,1.55);
  max-width:400px; width:85vw;
}
@keyframes popIn { from{transform:scale(0.5);opacity:0} to{transform:scale(1);opacity:1} }
.modal-icon { font-size:clamp(3rem,10vw,4.5rem); margin-bottom:12px; }
.modal-title { font-size:clamp(1.1rem,4vw,1.5rem); color:var(--gold); margin-bottom:8px; }
.modal-prize { font-size:clamp(1.4rem,6vw,2.2rem); font-weight:bold; margin:16px 0 24px; color:#fff; }
.modal-study-group { margin-bottom:20px; }
.modal-study-group label { display:block; font-size:0.85rem; color:rgba(255,255,255,0.5); margin-bottom:6px; }
.modal-study-input { width:100%; max-width:200px; padding:10px 14px; border:2px solid rgba(255,215,0,0.3); border-radius:10px; background:rgba(255,255,255,0.06); color:#fff; font-size:1.1rem; text-align:center; margin:0 auto; display:block; }
.modal-study-input:focus { outline:none; border-color:var(--gold); background:rgba(255,255,255,0.1); }
.modal-study-input::placeholder { color:rgba(255,255,255,0.3); }
.modal-btn { padding:12px 36px; background:linear-gradient(135deg,var(--gold),var(--gold-dark)); border:none; border-radius:12px; font-size:1rem; font-weight:bold; color:var(--bg-dark); cursor:pointer; transition:all 0.2s; }
.modal-btn:hover { transform:scale(1.05); }
.save-modal { position:fixed; inset:0; background:rgba(0,0,0,0.7); display:none; justify-content:center; align-items:center; z-index:210; backdrop-filter:blur(8px); }
.save-modal.show { display:flex; animation:fadeIn 0.2s; }
.save-modal-content {
  background:linear-gradient(135deg,var(--bg-card),#1a1a3e);
  border-radius:20px; padding:30px; border:2px solid rgba(255,215,0,0.3);
  width:min(360px,85vw); animation:popIn 0.3s cubic-bezier(0.68,-0.55,0.27,1.55);
}
.save-modal-title { font-size:1.2rem; margin-bottom:16px; color:var(--gold); }
.save-modal-input { width:100%; padding:12px 14px; border:1px solid rgba(255,255,255,0.2); border-radius:10px; background:rgba(255,255,255,0.08); color:#fff; font-size:1rem; margin-bottom:16px; }
.save-modal-input:focus { outline:none; border-color:var(--gold); }
.save-modal-actions { display:flex; gap:10px; justify-content:flex-end; }
.save-modal-btn { padding:10px 24px; border:none; border-radius:10px; font-size:0.9rem; font-weight:bold; cursor:pointer; transition:all 0.2s; }
.save-modal-btn.cancel { background:rgba(255,255,255,0.1); color:#fff; }
.save-modal-btn.confirm { background:linear-gradient(135deg,var(--gold),var(--gold-dark)); color:var(--bg-dark); }
.save-modal-btn:hover { transform:scale(1.03); }

/* 鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲 Toast 鎻愮ず 鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲鈺愨晲 */
.toast {
  position:fixed; top:20px; left:50%;
  transform:translateX(-50%) translateY(-100px);
  background:rgba(255,215,0,0.9); color:var(--bg-dark);
  padding:10px 24px; border-radius:12px;
  font-weight:bold; font-size:0.9rem;
  z-index:300; transition:transform 0.3s cubic-bezier(0.4,0,0.2,1);
  pointer-events:none;
}
.toast.show { transform:translateX(-50%) translateY(0); }

@keyframes shake { 0%,100%{transform:translateX(0)} 20%,60%{transform:translateX(-6px)} 40%,80%{transform:translateX(6px)} }

.close-reminder { position:fixed; inset:0; background:rgba(0,0,0,0.6); display:none; justify-content:center; align-items:center; z-index:350; backdrop-filter:blur(4px); pointer-events:none; transition:all 0.3s; }
.close-reminder.show { display:flex; pointer-events:all; animation:fadeIn 0.2s; }
.close-reminder-content {
  background:linear-gradient(135deg,var(--bg-card),#1a1a3e);
  border-radius:20px; padding:28px 36px; text-align:center;
  border:2px solid rgba(255,215,0,0.4); box-shadow:var(--shadow-dark);
  animation:popIn 0.3s cubic-bezier(0.68,-0.55,0.27,1.55);
  max-width:320px; width:85vw;
}
.reminder-btn { padding:10px 20px; border:none; border-radius:10px; font-size:0.85rem; font-weight:bold; cursor:pointer; transition:all 0.2s; }
.reminder-btn:hover { transform:scale(1.03); }
.reminder-btn.primary { background:linear-gradient(135deg,var(--success),#44a08d); color:#fff; }
.reminder-btn:not(.primary) { background:rgba(255,255,255,0.1); color:#fff; border:1px solid rgba(255,255,255,0.2); }
