* {margin:0;padding:0;box-sizing:border-box;font-family:"微软雅黑",sans-serif;}
body {background-color:#f5f7fa;}

a, button, input, div {outline:none;-webkit-tap-highlight-color:transparent;outline-offset: -2px;}
/* 头部 */
.header {
    text-align:center;
    padding:25px 20px;
    background:#fff;
    border-radius:16px;
    margin:15px;
    box-shadow:0 2px 10px rgba(0,0,0,0.05);
    animation: fadeIn 0.5s ease;
}
@keyframes fadeIn {
    from {opacity:0; transform: translateY(10px);}
    to {opacity:1; transform: translateY(0);}
}
.header-avatar {
    width:70px;height:70px;
    border-radius:50%;
    margin:0 auto 12px;
    background-image:url("https://q1.qlogo.cn/g?b=qq&nk=1953015168&s=640");
    background-size:cover;
    transition: transform 0.3s ease;
}
.header-avatar:hover {
    transform: scale(1.1);
}
.header-title {font-size:26px;font-weight:bold;color:#333;}
.header-subtitle {font-size:13px;color:#999;margin-top:6px;}
/* 搜索框 */
.search-box {
    margin:0 15px 15px;
    position:relative;
    animation: fadeIn 0.5s ease 0.1s backwards;
}
.search-box input {
    width:100%;
    height:44px;
    padding:0 40px;
    border:none;
    border-radius:22px;
    background:#fff;
    box-shadow:0 2px 8px rgba(0,0,0,0.05);
    font-size:14px;
    outline:none;
    transition: box-shadow 0.3s ease;
}
.search-box input:focus {
    box-shadow:0 4px 12px rgba(0,0,0,0.1);
}
.search-box::before {
    content:"";
    position:absolute;
    left:15px;top:13px;
    width:18px;height:18px;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23999'%3E%3Cpath d='M15.5 14h-.79l-.28-.27a6.5 6.5 0 0 0 1.48-5.34c0-3.07-2.13-5.64-5.03-5.64S5.47 5.59 5.47 8.66c0 3.07 2.13 5.64 5.03 5.64a6.5 6.5 0 0 0 5.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 8.66S7.01 3.32 10 3.32 15 5.33 15 8.66 12.99 14 10 14z'/%3E%3C/svg%3E");
    background-size:cover;
}
/* 无结果提示 */
.no-result {
    margin:0 15px 15px;
    padding:20px;
    background:#fff;
    border-radius:14px;
    text-align:center;
    color:#999;
    display:none;
}
.card-group {
    margin:0 15px 15px;
    padding:12px;
    background:#fff;
    border-radius:14px;
    box-shadow:0 2px 8px rgba(0,0,0,0.05);
    animation: fadeIn 0.5s ease 0.2s backwards;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.card-group:hover {
    transform: translateY(-3px);
    box-shadow:0 4px 12px rgba(0,0,0,0.1);
}
.card-group-title {
    display:flex;
    align-items:center;
    margin-bottom:10px;
    font-size:16px;color:#333;
}
.card-group-title img {
    width:22px;height:22px;
    margin-right:8px;
    object-fit:contain;
}
/* 卡片列表 */
.card-list {
    display:flex;
    flex-wrap:nowrap;
    gap:12px;
    overflow-x:auto;
    padding-bottom:5px;
}
.card {
    flex:0 0 85px;
    text-align:center;
    text-decoration:none;
    display:block;
}

.card-icon {
    width:50px;height:50px;
    margin:0 auto 5px;
    border-radius:12px;
    display:flex;
    align-items:center;
    justify-content:center;
    background:#fff;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1), 0 0 0 1px rgba(0,0,0,0.05);
}

.card-icon:hover, .card-icon.touch-active {
    transform:scale(1.15);
    box-shadow:0 4px 8px rgba(0,0,0,0.15);
}
.card-icon img {
    width:30px;height:30px;
    object-fit:contain;
    image-rendering: pixelated;
}
.card-name {
    font-size:12px;color:#333;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    animation: fadeIn 0.3s ease 0.3s backwards;
}
/* 新增：联系信息样式 */
.contact-info {
    margin:0 15px 30px;
    padding:15px;
    background:#fff;
    border-radius:14px;
    box-shadow:0 2px 8px rgba(0,0,0,0.05);
    text-align:center;
    font-size:14px;
    color:#333;
}
.contact-info p {
    margin:8px 0;
}
.contact-info a {
    color:#007aff;
    text-decoration:none;
    transition: color 0.2s ease;
}
.contact-info a:hover {
    color:#0056b3;
}

/* 新增：公告弹窗样式 */
.announcement-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.6);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1000;
    animation: fadeIn 0.3s ease;
}

.announcement-modal {
    background-color: #fff;
    width: 85%;
    max-width: 400px;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
    animation: scaleIn 0.3s ease;
}

@keyframes scaleIn {
    from { transform: scale(0.9); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

.announcement-header {
    background: linear-gradient(135deg, #6e8efb, #a777e3);
    color: white;
    padding: 18px 20px;
    text-align: center;
    font-size: 18px;
    font-weight: bold;
}

.announcement-content {
    padding: 20px;
    line-height: 1.6;
    color: #333;
    max-height: 300px;
    overflow-y: auto;
}

.announcement-footer {
    padding: 0 20px 20px;
    text-align: center;
}

.announcement-button {
    background: linear-gradient(135deg, #6e8efb, #a777e3);
    color: white;
    border: none;
    padding: 10px 30px;
    border-radius: 50px;
    font-size: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 4px 10px rgba(110, 142, 251, 0.3);
}

.announcement-button:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 15px rgba(110, 142, 251, 0.4);
}

.announcement-button:active {
    transform: translateY(0);
}

.hidden {
    display: none !important;
}