/* ===== 基础 ===== */
html { scroll-behavior: smooth; }
body { font-family: "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", "Noto Sans SC", ui-sans-serif, system-ui, sans-serif; }
::selection { background: #c7d2fe; color: #1e1b4b; }

/* ===== 模块滚动入场动画 ===== */
.module {
    opacity: 0;
    transform: translateY(44px);
    transition: opacity .8s cubic-bezier(.22,.61,.36,1), transform .8s cubic-bezier(.22,.61,.36,1), box-shadow .3s ease;
}
.module.show { opacity: 1; transform: translateY(0); }
.module.new-module { animation: slideInNew .8s cubic-bezier(.22,.61,.36,1) both; }
@keyframes slideInNew {
    from { opacity: 0; transform: translateY(36px); }
    to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .module { transition: none; opacity: 1; transform: none; }
}

/* ===== 导航链接（下划线动画 + 当前高亮） ===== */
.nav-link { position: relative; transition: color .25s, background-color .25s; }
.nav-link::after {
    content: '';
    position: absolute;
    left: .75rem; right: .75rem; bottom: .3rem;
    height: 2px; border-radius: 1px;
    background: linear-gradient(90deg, #6366f1, #0ea5e9);
    transform: scaleX(0); transform-origin: left;
    transition: transform .3s cubic-bezier(.22,.61,.36,1);
}
.nav-link:hover::after,
.nav-link.active::after { transform: scaleX(1); }
.nav-link.active { color: #4f46e5; background: #eef2ff; }

/* ===== 弹窗过渡 ===== */
.modal-overlay { opacity: 0; pointer-events: none; transition: opacity .3s ease; }
.modal-overlay.active { opacity: 1; pointer-events: auto; }
.modal-overlay .modal {
    transform: translateY(-24px) scale(.98);
    transition: transform .35s cubic-bezier(.22,.61,.36,1);
}
.modal-overlay.active .modal { transform: translateY(0) scale(1); }

/* ===== 删除按钮（悬停显示，触屏常显） ===== */
.module-delete { opacity: 0; transition: opacity .25s; }
.module:hover .module-delete { opacity: 1; }
@media (hover: none) { .module-delete { opacity: 1; } }

/* ===== Toast ===== */
.toast {
    opacity: 0;
    transform: translate(-50%, 16px);
    pointer-events: none;
    transition: all .4s cubic-bezier(.22,.61,.36,1);
}
.toast.show { opacity: 1; transform: translate(-50%, 0); }

/* ===== 视图切换 ===== */
.view { display: none; }
.view.active { display: block; animation: fadeIn .35s ease both; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* ===== 表单控件（编辑弹窗共用） ===== */
.form-input {
    width: 100%;
    border-radius: .75rem;
    border: 1px solid #cbd5e1;
    background: #fff;
    padding: .6rem .9rem;
    font-size: .875rem;
    color: #1e293b;
    box-shadow: 0 1px 2px rgb(0 0 0 / .05);
    outline: none;
    transition: border-color .2s, box-shadow .2s;
}
.form-input:focus { border-color: #6366f1; box-shadow: 0 0 0 4px rgb(99 102 241 / .15); }
.form-label { display: block; margin-bottom: .4rem; font-size: .875rem; font-weight: 500; color: #334155; }

/* ===== 内容卡片（公告/活动/作业/课件共用） ===== */
.content-card {
    background: #fff;
    border-radius: 1.25rem;
    box-shadow: 0 20px 25px -5px rgb(226 232 240 / .7), 0 8px 10px -6px rgb(226 232 240 / .5);
    border: 1px solid #f1f5f9;
    transition: box-shadow .3s, transform .3s;
}
.content-card:hover { box-shadow: 0 25px 35px -10px rgb(148 163 184 / .5); transform: translateY(-2px); }

/* ===== 管理员操作按钮 ===== */
.admin-only { display: none; }
body.logged-in .admin-only { display: inline-flex; }
