.poster-generator-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:10000;padding:20px}.poster-generator-modal{background:#fff;border-radius:16px;max-width:400px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 40px rgba(0,0,0,.3)}.poster-header{display:flex;justify-content:space-between;align-items:center;padding:20px 20px 0;border-bottom:1px solid #f0f0f0;margin-bottom:20px}.poster-header h3{margin:0;font-size:18px;font-weight:600;color:#333}.close-button{background:none;border:none;cursor:pointer;padding:8px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#666;transition:all .2s}.close-button:hover{background:#f5f5f5;color:#333}.poster-preview-container{padding:0 20px;margin-bottom:20px}.poster-preview{width:100%;aspect-ratio:9/16;border-radius:12px;position:relative;overflow:visible;box-shadow:0 8px 24px rgba(0,0,0,.15);display:flex;flex-direction:column;padding:20px;box-sizing:border-box;min-height:500px;contain:layout style paint}.poster-preview.job-poster{aspect-ratio:9/14;min-height:450px}.poster-preview.training-poster{aspect-ratio:9/18;min-height:600px}.poster-header-content{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.poster-brand .brand-text{font-size:16px;font-weight:700;color:#d32f2f;background:hsla(0,0%,100%,.9);padding:4px 8px;border-radius:4px}.poster-theme-icon .theme-icon{font-size:24px;opacity:.8}.poster-theme-text{text-align:center;margin-bottom:20px;display:flex;flex-direction:column;justify-content:center;flex:0.5}.theme-title{font-size:18px;font-weight:700;margin:0 0 8px;line-height:1.3}.theme-subtitle{font-size:12px;margin:0;opacity:.7;font-weight:500}.poster-policy-section{background:hsla(0,0%,100%,.95);border-radius:8px;padding:12px;margin-bottom:16px;box-shadow:0 2px 8px rgba(0,0,0,.1);flex-shrink:0}.poster-policy-highlight{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding:6px 8px;background:linear-gradient(135deg,#ff6b6b,#ee5a24);border-radius:6px;color:#fff}.poster-policy-icon{font-size:16px}.poster-policy-text{font-size:12px;font-weight:600;line-height:1.3}.poster-policy-targets{margin-bottom:10px}.poster-policy-target-title{font-size:11px;font-weight:600;color:#333;margin-bottom:6px}.poster-policy-target-list{display:flex;flex-wrap:wrap;gap:4px}.poster-target-tag{font-size:10px;padding:2px 6px;background:rgba(25,118,210,.1);color:#1565c0;border-radius:4px;border:1px solid rgba(25,118,210,.2);white-space:nowrap}.poster-policy-subsidy{display:flex;gap:12px}.poster-subsidy-item{display:flex;align-items:center;gap:4px;font-size:10px;color:#2e7d32;font-weight:500}.poster-subsidy-icon{font-size:12px}.poster-subsidy-text{line-height:1.2}.poster-policy-note{display:flex;align-items:center;gap:6px;margin-top:8px;padding:6px 8px;background:rgba(255,193,7,.1);border-radius:4px;border-left:3px solid #ffc107}.poster-note-icon{font-size:12px;flex-shrink:0}.poster-note-text{font-size:9px;color:#856404;line-height:1.3;font-weight:500}.poster-content{background:#fff;border-radius:8px;padding:16px;margin-bottom:20px;box-shadow:0 2px 8px rgba(0,0,0,.1);display:flex;gap:0;align-items:flex-start;flex-shrink:0;position:relative;overflow:visible}.poster-preview .company-name,.poster-preview .contact-info,.poster-preview .job-address,.poster-preview .job-tag,.poster-preview .school-name{font-size:14px}.poster-preview .contact-info{font-weight:700}.poster-job-info{flex:1;min-width:0;margin:0;padding:0}.salary-display{color:#d32f2f}.job-title,.salary-display{font-size:20px;font-weight:700;margin-bottom:8px}.job-title{line-height:1.3;color:#1a1a1a;text-shadow:0 1px 2px rgba(0,0,0,.1)}.poster-preview .jobs-tags{display:flex;gap:8px;justify-content:center;align-items:center;margin-bottom:6px;flex-wrap:wrap}.poster-preview .job-tag{background:#f5f5f5;color:#666;padding:4px 8px;border-radius:12px;font-size:14px;font-weight:400;border:1px solid #e0e0e0;white-space:nowrap}.job-address{margin-bottom:6px;gap:4px}.company-name,.job-address{font-size:14px;color:#666;font-weight:400;display:flex;align-items:center;justify-content:center}.company-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:8px;padding:6px 8px;background:hsla(0,0%,100%,.9);border-radius:4px;gap:6px}.school-name{background:hsla(0,0%,100%,.95)}.contact-info,.school-name{font-size:14px;font-weight:400;color:#666;text-align:center}.contact-info{margin-top:8px;line-height:1.4;margin-bottom:0}.poster-qr-section{flex-shrink:0;display:flex;justify-content:flex-end;align-items:flex-start;align-self:flex-start;margin:0;padding:0;position:relative;z-index:10}.poster-generator-modal .poster-preview .poster-qr-section{align-self:center;justify-content:center}@media (max-width:480px){.poster-generator-modal .poster-preview .poster-qr-section{margin-top:8px}.poster-generator-modal .poster-preview .poster-content{flex-direction:column;align-items:center}.poster-generator-modal .poster-preview .poster-job-info{text-align:center;width:100%}}.qr-code-container{text-align:center;position:relative;min-width:172px;min-height:172px;display:flex;flex-direction:column;align-items:center;justify-content:center}.qr-code{margin-bottom:6px}.qr-code,.qr-code-container svg{width:160px;height:160px;border-radius:6px;display:block}.qr-code-container svg{background:#fff;padding:6px;max-width:none;max-height:none;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden}.qr-tip{font-size:12px;color:#666;line-height:1.2;font-weight:500}.poster-pattern{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;opacity:.1}.spring-pattern{background-image:radial-gradient(circle at 20% 30%,hsla(0,0%,100%,.3) 1px,transparent 0),radial-gradient(circle at 80% 70%,hsla(0,0%,100%,.3) 1px,transparent 0);background-size:20px 20px}.cherry-pattern{background-image:radial-gradient(circle at 30% 20%,hsla(0,0%,100%,.2) 2px,transparent 0),radial-gradient(circle at 70% 80%,hsla(0,0%,100%,.2) 2px,transparent 0);background-size:30px 30px}.bamboo-pattern{background-image:linear-gradient(90deg,transparent 98%,hsla(0,0%,100%,.2));background-size:15px 15px}.breeze-pattern{background-image:radial-gradient(circle at 50% 50%,hsla(0,0%,100%,.1) 1px,transparent 0);background-size:25px 25px}.sunset-pattern{background-image:linear-gradient(45deg,transparent 49%,hsla(0,0%,100%,.1) 50%,transparent 51%);background-size:20px 20px}.poster-style-selector{padding:0 20px;margin-bottom:20px}.poster-style-selector h4{font-size:14px;color:#666;margin:0 0 12px;text-align:center}.style-thumbnails{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;justify-content:center}.style-thumbnail{min-width:60px;height:80px;border-radius:8px;cursor:pointer;border:2px solid transparent;transition:all .2s;position:relative;overflow:hidden;flex-shrink:0}.style-thumbnail:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.style-thumbnail.active{border-color:#1976d2;box-shadow:0 0 0 2px rgba(25,118,210,.2)}.thumbnail-content{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:8px;box-sizing:border-box}.thumbnail-icon{font-size:16px;margin-bottom:4px}.thumbnail-title{font-size:10px;text-align:center;line-height:1.2;color:rgba(0,0,0,.8);font-weight:500}.poster-actions{padding:0 20px 20px;display:flex;gap:8px;flex-wrap:wrap}.action-btn{flex:1;min-width:120px;padding:12px 16px;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:6px}.action-btn.primary{background:#1976d2;color:#fff}.action-btn.primary:hover{background:#1565c0;transform:translateY(-1px)}.action-btn.secondary{background:#f5f5f5;color:#333;border:1px solid #e0e0e0}.action-btn.secondary:hover{background:#eee;transform:translateY(-1px)}.action-btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.action-btn:disabled:hover{background:inherit;transform:none!important}@media (max-width:480px){.poster-generator-overlay{padding:10px}.poster-generator-modal{max-width:100%}.poster-preview{padding:12px;aspect-ratio:9/16;min-height:500px}.poster-header-content{margin-bottom:16px}.poster-brand .brand-text{font-size:14px;padding:3px 6px}.poster-theme-icon .theme-icon{font-size:20px}.poster-content,.poster-theme-text{margin-bottom:16px}.poster-content{flex-direction:column;gap:0;overflow:visible}.poster-job-info{margin-bottom:12px}.poster-qr-section{align-self:center;margin:0;padding:0;position:relative;z-index:10}.theme-title{font-size:14px;line-height:1.2}.theme-subtitle{font-size:10px}.job-title,.salary-display{font-size:16px}.job-title{font-weight:700;line-height:1.2}.poster-preview .jobs-tags{gap:6px;margin-bottom:4px}.poster-preview .job-tag{padding:3px 6px;border-radius:10px;font-size:12px}.job-address{margin-bottom:4px}.company-name,.job-address{font-size:12px;font-weight:400;color:#666;text-align:center}.company-name{padding:3px 5px;margin-top:6px}.school-name{padding:3px 5px}.contact-info,.school-name{font-size:12px;margin-top:6px;font-weight:400;color:#666;text-align:center}.poster-policy-section{padding:8px;margin-bottom:12px}.poster-policy-highlight{padding:4px 6px;margin-bottom:8px}.poster-policy-text{font-size:10px;line-height:1.3}.poster-policy-target-title{font-size:9px;margin-bottom:4px}.poster-policy-target-list{gap:2px}.poster-target-tag{font-size:8px;padding:1px 3px;line-height:1.2}.poster-policy-subsidy{gap:8px;margin-bottom:6px}.poster-subsidy-item{font-size:8px;gap:2px}.poster-subsidy-icon{font-size:9px}.poster-policy-note{padding:3px 5px;margin-top:6px}.poster-note-text{font-size:7px;line-height:1.2}.qr-code-container{min-width:120px;min-height:120px}.qr-code,.qr-code-container svg{width:110px;height:110px;max-width:none;max-height:none;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden}.qr-tip{font-size:10px;margin-top:4px}.style-thumbnails{gap:6px}.style-thumbnail{min-width:50px;height:70px}.action-btn{padding:10px 12px;font-size:13px;min-width:100px}.poster-preview.job-poster{aspect-ratio:10/14;min-height:450px}.poster-preview.training-poster{aspect-ratio:10/18;min-height:600px}}@media (max-width:420px){.poster-preview.job-poster{aspect-ratio:9/14;min-height:450px}.poster-preview.training-poster{aspect-ratio:9/18;min-height:600px}}@media (max-width:380px){.poster-preview{padding:8px;aspect-ratio:9/18;min-height:550px}.poster-preview.job-poster{aspect-ratio:8/12;min-height:400px}.poster-preview.training-poster{aspect-ratio:8/16;min-height:550px}.theme-title{font-size:12px}.theme-subtitle{font-size:9px}.job-title,.salary-display{font-size:14px}.poster-policy-text{font-size:9px}.poster-target-tag{font-size:7px;padding:1px 2px}.poster-subsidy-item{font-size:7px}.poster-note-text{font-size:6px}.qr-code,.qr-code-container svg{width:100px;height:100px}.qr-tip{font-size:9px}}.style-thumbnails::-webkit-scrollbar{height:4px}.style-thumbnails::-webkit-scrollbar-track{background:#f1f1f1;border-radius:2px}.style-thumbnails::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:2px}.style-thumbnails::-webkit-scrollbar-thumb:hover{background:#a8a8a8}