.jobs-container{max-width:480px;margin:0 auto;background:#f5f5f5;min-height:100vh;display:flex;flex-direction:column;padding-bottom:120px;width:100vw}.jobs-fixed-header{position:sticky;top:0;background:#f5f5f5;z-index:999;padding:16px 8px 8px;box-shadow:0 2px 8px rgba(0,0,0,.1);flex-shrink:0}.jobs-content{flex:1;overflow-y:auto;padding:0 8px}.jobs-card .jobs-content{display:flex;justify-content:space-between;align-items:flex-start;width:100%;gap:20px}.jobs-left{flex:1;gap:8px}.jobs-left,.jobs-right{display:flex;flex-direction:column}.jobs-right{align-items:stretch;justify-content:flex-start;min-width:120px;flex-shrink:0}.jobs-actions{display:flex;flex-direction:column;gap:10px;width:100%;margin-top:8px}.action-btn{padding:8px 16px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;width:100%;text-align:center}.apply-btn{background-color:#1890ff;color:#fff}.apply-btn:hover{background-color:#40a9ff}.poster-btn{background-color:#52c41a;color:#fff}.poster-btn:hover{background-color:#73d13d}.jobs-list-wrapper{gap:18px;margin-top:18px}.jobs-card,.jobs-list-wrapper{display:flex;flex-direction:column}.jobs-card{background:#fff;border-radius:12px;box-shadow:0 2px 12px rgba(0,0,0,.1);padding:18px 16px 16px;gap:12px;font-size:1rem;position:relative;transition:all .2s ease}.jobs-card.clickable:hover{transform:translateY(-2px);box-shadow:0 4px 20px rgba(0,0,0,.15)}.jobs-header{display:flex;justify-content:space-between;align-items:flex-start}.jobs-title{font-size:1.1rem;font-weight:700;color:#000;flex:1}.jobs-timestamp{font-size:.8rem;color:#9ca3af;margin-left:12px}.jobs-salary{font-size:1.2rem;font-weight:700;color:#f97316}.jobs-tags{display:flex;flex-wrap:wrap;gap:8px}.tag{background:#f3f4f6;color:#6b7280;padding:4px 8px;border-radius:6px;font-size:.8rem}.jobs-address{color:#374151;font-size:.9rem}.jobs-desc,.jobs-requirements{color:#374151;font-size:.9rem;line-height:1.5}.jobs-contact{display:flex;gap:16px;font-size:.9rem}.contact-item{color:#1e40af;font-weight:500}.contact-value{color:#1e40af;margin-left:4px}.phone-link{text-decoration:none;cursor:pointer}.phone-link:hover{text-decoration:underline}.jobs-divider{height:1px;background-color:#e5e7eb}.jobs-footer{justify-content:space-between}.jobs-company,.jobs-footer{display:flex;align-items:center}.jobs-company{color:#343536;font-size:.85rem;gap:4px}.company-icon{font-size:1rem}.no-results{text-align:center;padding:40px 20px;color:#6c757d;background:#fff;border-radius:12px;box-shadow:0 2px 12px rgba(79,140,255,.08)}.no-results p{margin:0;font-size:1.1rem}.filter-row{padding:20px;max-height:calc(80vh - 160px);overflow-y:auto}.filter-actions{display:flex;gap:12px;padding:16px 20px;background:#f8f9fa;border-top:1px solid #e9ecef}.filter-reset-btn{flex:1;padding:12px;background:#fff;color:#666;border:1px solid #ddd;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s ease}.filter-reset-btn:hover{background:#f5f5f5;border-color:#ccc}.filter-confirm-btn{flex:2;padding:12px;background:linear-gradient(135deg,#4f8cff,#38cfa6);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px rgba(79,140,255,.3)}.filter-confirm-btn:hover{background:linear-gradient(135deg,#3b73e6,#2db89e);transform:translateY(-1px);box-shadow:0 4px 12px rgba(79,140,255,.4)}.filter-confirm-btn:active{transform:translateY(0)}@keyframes tagAppear{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUpFromBottom{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media (min-width:768px){.jobs-container,.jobs-fixed-header{max-width:768px}.course-detail-container,.job-detail-container{max-width:768px;min-width:100vw}.filter-popup-content{max-width:600px}.filter-actions{padding:20px}.filter-confirm-btn,.filter-reset-btn{padding:14px;font-size:1.1rem}}@media (min-width:1024px){.jobs-container,.jobs-fixed-header{max-width:900px}.course-detail-container,.job-detail-container{max-width:900px;min-width:100vw}}@media (max-width:767px){.search-filter-row{gap:6px}.filter-icon-btn{padding:8px 12px;font-size:.85rem;border-radius:10px;height:40px}.filter-icon-btn.active{background:linear-gradient(135deg,#2a5d9f,#4f8cff)}.filter-icon{font-size:.9rem}.filter-popup-content{border-radius:16px 16px 0 0;max-height:70vh}.filter-popup-header{padding:16px;border-radius:16px 16px 0 0}.filter-title{font-size:1rem}.filter-row{padding:16px;max-height:calc(70vh - 140px)}.filter-actions{padding:12px 16px}.filter-confirm-btn,.filter-reset-btn{padding:10px;font-size:.95rem}.filter-tag{font-size:.8rem;padding:5px 10px}.filter-tag-close{width:16px;height:16px;font-size:.8rem}}.search-filter-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.search-filter-row>:first-child{flex:1}.filter-icon-btn{background:linear-gradient(135deg,#4f8cff,#6ba3ff);border:none;border-radius:12px;padding:10px 16px;color:#fff;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:6px;min-width:auto;height:44px;box-shadow:0 2px 8px rgba(79,140,255,.3);white-space:nowrap}.filter-icon-btn.active{background:linear-gradient(135deg,#2a5d9f,#4f8cff);box-shadow:0 2px 8px rgba(42,93,159,.3)}.filter-icon-btn:hover{background:linear-gradient(135deg,#3b73e6,#5a94ff);transform:translateY(-2px);box-shadow:0 4px 16px rgba(79,140,255,.4)}.filter-icon-btn.active:hover{background:linear-gradient(135deg,#1e4a7a,#3b73e6);box-shadow:0 4px 16px rgba(42,93,159,.4)}.filter-icon-btn:active{transform:translateY(0)}.filter-icon{font-size:1rem;display:inline-block;animation:pulse 2s infinite;transition:transform .3s ease}.filter-icon-btn.active .filter-icon{transform:rotate(90deg);animation:none}.filter-text{font-size:inherit;font-weight:inherit;letter-spacing:.5px}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.selected-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.filter-tag{background:linear-gradient(135deg,#4f8cff,#6ba3ff);color:#fff;padding:6px 12px;border-radius:20px;font-size:.85rem;font-weight:500;gap:6px;box-shadow:0 2px 8px rgba(79,140,255,.3);animation:tagAppear .3s ease}.filter-tag,.filter-tag-close{display:flex;align-items:center}.filter-tag-close{background:hsla(0,0%,100%,.3);border-radius:50%;width:18px;height:18px;justify-content:center;cursor:pointer;font-size:.9rem;font-weight:700;transition:background-color .2s ease}.filter-tag-close:hover{background:hsla(0,0%,100%,.5)}.filter-popup{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:1000;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .3s ease}.filter-popup-content{background:#fff;border-radius:20px 20px 0 0;box-shadow:0 -4px 32px rgba(0,0,0,.15);width:100%;max-width:480px;max-height:80vh;overflow-y:auto;animation:slideUpFromBottom .3s ease}.filter-popup-header{display:flex;justify-content:space-between;align-items:center;padding:20px;background:linear-gradient(135deg,#4f8cff,#38cfa6);color:#fff;border-radius:20px 20px 0 0;position:relative}.filter-drag-indicator{position:absolute;top:8px;left:50%;transform:translateX(-50%);width:40px;height:4px;background:hsla(0,0%,100%,.4);border-radius:2px}.filter-title{font-size:1.1rem;font-weight:600}.filter-close-btn{background:hsla(0,0%,100%,.2);border:none;color:#fff;font-size:1.5rem;font-weight:700;width:32px;height:32px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease}.filter-close-btn:hover{background:hsla(0,0%,100%,.3)}.highlight{background-color:#fff3cd;padding:2px 4px;border-radius:3px;font-weight:500}.loading-more{text-align:center;padding:20px;color:#6c757d;background:#fff;border-radius:12px;box-shadow:0 2px 12px rgba(79,140,255,.08);margin-top:18px}.loading-more p{display:flex;align-items:center;justify-content:center;gap:8px}.loading-more p:before{content:"";width:16px;height:16px;border:2px solid #e9ecef;border-top-color:#4f8cff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.no-more-data{text-align:center;padding:16px;color:#6c757d;font-size:.9rem;background:#f8f9fa;border-radius:8px;margin-top:18px;border:1px dashed #dee2e6}.no-more-data p{margin:0}.jobs-card{animation:slideUp .3s ease-out}.jobs-list-wrapper{scroll-behavior:smooth}.jobs-content h2{transition:all .3s ease}@media (max-width:767px){.loading-more{padding:16px}.no-more-data{padding:12px;font-size:.85rem}}.initial-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;background:#fff;border-radius:12px;box-shadow:0 2px 12px rgba(79,140,255,.08);margin:20px 0}.initial-loading p{margin:20px 0 0;font-size:1.1rem;color:#6c757d;font-weight:500}.search-loading-overlay{display:none}.loading-spinner{width:40px;height:40px;border:3px solid #e9ecef;border-top-color:#4f8cff;border-radius:50%;animation:spin 1s linear infinite}.loading-spinner.small{width:20px;height:20px;border:2px solid #e9ecef;border-top-color:#4f8cff}.loading-more{display:flex;align-items:center;justify-content:center;gap:12px}.loading-more p{margin:0;font-size:1rem;color:#6c757d}@media (max-width:767px){.initial-loading{padding:40px 16px;margin:16px 0}.initial-loading p,.search-loading-overlay p{font-size:1rem}.loading-spinner{width:32px;height:32px;border-width:2px}}.loading-tip{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.8);color:#fff;padding:8px 16px;border-radius:20px;font-size:14px;display:flex;align-items:center;gap:8px;z-index:1000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 2px 12px rgba(0,0,0,.2)}.loading-tip .loading-spinner.small{width:16px;height:16px;border-width:2px}.course-detail-container,.job-detail-container{max-width:480px;margin:0 auto;background:#f5f5f5;min-height:100vh;display:flex;flex-direction:column;padding-bottom:120px;min-width:100vw}.detail-header{position:sticky;top:0;background:#f5f5f5;z-index:999;padding:16px 16px 8px;gap:12px;box-shadow:0 2px 8px rgba(0,0,0,.1)}.back-button,.detail-header{display:flex;align-items:center}.back-button{background:none;border:none;color:#374151;cursor:pointer;padding:8px;border-radius:8px;transition:all .2s ease;justify-content:center}.back-button:hover{background-color:rgba(0,0,0,.05);transform:translateX(-2px)}.detail-title{font-size:1.1rem;font-weight:600;color:#000;margin:0}.course-detail-card,.job-detail-card{background:#fff;margin:16px;border-radius:12px;box-shadow:0 2px 12px rgba(0,0,0,.1);overflow:hidden}.course-hero-section,.job-hero-section{padding:24px 20px 20px;border-bottom:1px solid #f3f4f6;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;position:relative;overflow:hidden}.course-hero-section:before,.job-hero-section:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="25" cy="25" r="1" fill="white" opacity="0.1"/><circle cx="75" cy="75" r="1" fill="white" opacity="0.1"/><circle cx="50" cy="10" r="0.5" fill="white" opacity="0.1"/><circle cx="10" cy="60" r="0.5" fill="white" opacity="0.1"/><circle cx="90" cy="40" r="0.5" fill="white" opacity="0.1"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');opacity:.3}.course-badge,.job-badge{display:inline-block;background:hsla(0,0%,100%,.2);color:#fff;padding:4px 12px;border-radius:20px;font-size:.8rem;font-weight:500;margin-bottom:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.1)}.course-name,.job-name{font-size:1.4rem;font-weight:700;color:#fff;margin:0 0 12px;line-height:1.4;position:relative;z-index:1}.course-school,.job-company{display:flex;align-items:center;gap:8px;color:hsla(0,0%,100%,.9);font-size:.95rem;margin-bottom:16px;position:relative;z-index:1}.company-icon,.school-icon{font-size:1.1rem}.company-name,.school-name{font-weight:500}.course-meta,.job-meta{display:flex;flex-direction:column;gap:8px;position:relative;z-index:1}.meta-item{display:flex;align-items:center;gap:8px;color:hsla(0,0%,100%,.9);font-size:.9rem}.meta-icon{font-size:1rem;opacity:.8}.meta-text{font-weight:500}.meta-text.salary-highlight{color:#fbbf24;font-weight:600;font-size:1rem}.course-info-section,.job-info-section{padding:16px 20px;border-bottom:1px solid #f3f4f6}.info-item{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px;line-height:1.5}.info-item:last-child{margin-bottom:0}.info-label{color:#6b7280;font-size:.9rem;min-width:80px;flex-shrink:0}.info-value{color:#374151;font-size:.9rem;text-align:right;flex:1;margin-left:12px}.info-value.salary{color:#f97316;font-weight:600;font-size:1rem}.course-content-section,.job-desc-section,.job-requirements-section{padding:16px 20px;border-bottom:1px solid #f3f4f6}.section-title{font-size:1rem;font-weight:600;color:#000;margin:0 0 12px}.course-content,.job-desc,.job-requirements{color:#374151;font-size:.9rem;line-height:1.6;white-space:pre-line}.course-contact-section,.job-contact-section{padding:16px 20px;border-bottom:1px solid #f3f4f6}.contact-info{display:flex;flex-direction:column;gap:8px}.contact-item{display:flex;align-items:center;gap:8px}.contact-label{color:#6b7280;font-size:.9rem;min-width:70px}.contact-value{color:#374151;font-size:.9rem;font-weight:500}.contact-value.phone-link{color:#3b82f6;text-decoration:none}.contact-value.phone-link:hover{text-decoration:underline}.course-actions,.job-actions{padding:20px;display:flex;gap:12px}.action-button{flex:1;padding:12px 16px;border:none;border-radius:8px;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease}.action-button.primary{background:#3b82f6;color:#fff}.action-button.primary:hover:not(:disabled){background:#2563eb;transform:translateY(-1px)}.action-button.primary:disabled{background:#9ca3af;cursor:not-allowed}.action-button.secondary{background:#f3f4f6;color:#374151}.action-button.secondary:hover{background:#e5e7eb;transform:translateY(-1px)}@media (max-width:767px){.course-detail-container,.job-detail-container{padding-bottom:100px;min-width:100vw}.detail-header{padding:12px 12px 8px}.course-detail-card,.job-detail-card{margin:12px}.course-hero-section,.job-hero-section{padding:20px 16px 16px}.course-name,.job-name{font-size:1.3rem}.course-contact-section,.course-content-section,.course-info-section,.job-contact-section,.job-desc-section,.job-info-section,.job-requirements-section{padding:12px 16px}.course-actions,.job-actions{padding:16px;flex-direction:column}.action-button{width:100%}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content{background:#fff;border-radius:12px;max-width:400px;width:100%;max-height:80vh;overflow-y:auto;box-shadow:0 10px 25px rgba(0,0,0,.2);animation:modalSlideIn .3s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 20px 0;border-bottom:1px solid #f0f0f0;margin-bottom:20px}.modal-header h3{margin:0;font-size:18px;font-weight:600;color:#333}.modal-close{background:none;border:none;font-size:24px;color:#999;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s ease}.modal-close:hover{background-color:#f5f5f5;color:#666}.modal-body{padding:0 20px 20px}.course-info{margin-bottom:24px}.course-info h4{margin:0 0 8px;font-size:16px;font-weight:600;color:#333;line-height:1.4}.school-name{margin:0 0 12px;color:#666;font-size:14px}.course-details{background:#f8f9fa;padding:12px;border-radius:8px;border-left:4px solid #1890ff}.course-details p{margin:0 0 8px;font-size:14px;line-height:1.5}.course-details p:last-child{margin-bottom:0}.contact-info{margin-bottom:4px}.contact-info h4{margin:0 0 12px;font-size:16px;font-weight:600;color:#333}.contact-info p{margin:0 0 8px;font-size:14px;line-height:1.5}.phone-section{background:#f0f8ff;padding:12px;border-radius:8px;border:1px solid #d6e4ff;margin-top:8px}.call-btn{background:#1890ff;color:#fff;border:none;padding:10px 20px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;margin-top:8px;width:100%;transition:all .2s ease}.call-btn:hover{background:#40a9ff;transform:translateY(-1px)}.no-phone{color:#999;font-style:italic;background:#f5f5f5;padding:8px 12px;border-radius:6px;margin:0}.apply-tips{background:#fff7e6;padding:16px;border-radius:8px;border-left:4px solid #faad14}.apply-tips h4{margin:0 0 12px;font-size:16px;font-weight:600;color:#333}.apply-tips ul{margin:0;padding-left:20px}.apply-tips li{margin:0 0 6px;font-size:14px;line-height:1.5;color:#666}.apply-tips li:last-child{margin-bottom:0}.modal-footer{padding:0 20px 20px;display:flex;justify-content:flex-end}.btn-secondary{background:#f5f5f5;color:#666;border:1px solid #d9d9d9;padding:10px 20px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-secondary:hover{background:#e6e6e6;border-color:#bfbfbf}@media (max-width:480px){.modal-overlay{padding:10px}.modal-content{max-height:85vh}.modal-body,.modal-footer,.modal-header{padding-left:16px;padding-right:16px}.modal-header{padding-top:16px}.modal-footer{padding-bottom:16px}}.jobs-footer .jobs-actions{display:flex;flex-direction:column;gap:8px;min-width:120px}.job-info{margin-bottom:20px}.job-info h4{font-size:1.2rem;font-weight:700;color:#000;margin-bottom:8px}.company-name{font-size:1rem;color:#6b7280;margin-bottom:12px}.job-details{background-color:#f8f9fa;padding:12px;border-radius:8px;margin-bottom:16px}.job-details p{margin:4px 0;font-size:.9rem;color:#374151}