*{margin:0;padding:0;box-sizing:border-box}body{font-family:PingFang SC,Microsoft YaHei,sans-serif;background:#f5f6fa;color:#333}.header{position:sticky;top:0;z-index:10;background:linear-gradient(135deg,#4f6ef7,#6a5cff);box-shadow:0 2px 8px rgba(79,110,247,.35)}.header-inner{max-width:1100px;margin:0 auto;padding:18px 24px;display:flex;align-items:center;gap:24px}.logo{font-size:22px;font-weight:700;color:#fff;letter-spacing:2px;white-space:nowrap}.search-box{flex:1;display:flex;align-items:center;gap:12px}.search-input{flex:1;max-width:480px;height:38px;padding:0 16px;border:none;border-radius:19px;outline:none;font-size:14px;background:hsla(0,0%,100%,.95)}.search-count{color:hsla(0,0%,100%,.9);font-size:13px;white-space:nowrap}.job-grid{max-width:1100px;margin:0 auto;padding:24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.job-card{background:#fff;border-radius:12px;padding:18px 20px;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 1px 4px rgba(0,0,0,.06)}.job-card:hover{transform:translateY(-3px);box-shadow:0 6px 18px rgba(79,110,247,.18)}.card-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.job-title{font-weight:600;color:#222;overflow:hidden;text-overflow:ellipsis}.job-salary,.job-title{font-size:16px;white-space:nowrap}.job-salary{color:#ff6b35;font-weight:700}.tag-row{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}.tag{display:inline-block;padding:2px 10px;border-radius:4px;font-size:12px;color:#4f6ef7;background:#eef1ff}.comp-line{margin-top:12px;padding-top:12px;border-top:1px dashed #eee}.comp-name{font-size:14px;font-weight:600;color:#444}.comp-meta{display:block;margin-top:4px;font-size:12px;color:#999}.card-bottom{margin-top:10px;display:flex;justify-content:space-between;font-size:12px;color:#888}.empty{grid-column:1/-1;text-align:center;color:#999;padding:60px 0;font-size:14px}.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:100;padding:24px}.modal{position:relative;background:#fff;border-radius:14px;max-width:720px;width:100%;max-height:85vh;overflow-y:auto;padding:28px 32px;box-shadow:0 12px 40px rgba(0,0,0,.25)}.modal-close{position:absolute;top:14px;right:16px;width:32px;height:32px;border:none;border-radius:50%;background:#f0f2f7;color:#666;font-size:20px;line-height:1;cursor:pointer}.modal-close:hover{background:#e2e5ee}.modal-head h2{font-size:22px;color:#222;padding-right:40px}.modal-salary{margin-top:8px;font-size:20px;font-weight:700;color:#ff6b35}.modal-tags{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap}.modal-info{margin-top:16px;padding:14px 16px;background:#f8f9fc;border-radius:8px;font-size:13px;color:#555;line-height:1.9}.modal-desc{margin-top:16px;font-size:14px;line-height:1.8;color:#444;white-space:pre-wrap}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-to{opacity:0}