@import url(https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400;1,700&family=Montserrat:ital,wght@0,400;0,700;1,400;1,700&family=Dancing+Script:wght@400;700&family=Roboto:ital,wght@0,400;0,700;1,400;1,700&family=Merriweather:ital,wght@0,400;0,700;1,400;1,700&display=swap);body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@font-face{font-display:swap;font-family:PangMenZhengDao;font-style:normal;font-weight:400;src:url(/static/media/%E5%BA%9E%E9%97%A8%E6%AD%A3%E9%81%93%E7%B2%97%E4%B9%A6%E4%BD%93.67e12a6ecd4280def539.ttf) format("truetype")}@font-face{font-display:swap;font-family:"SourceHanSerif";font-style:normal;font-weight:400;src:url(/static/media/SourceHanSerifCN-Regular-1.f23f7000d4316da199ca.otf) format("opentype")}.App{background:linear-gradient(135deg,#ffeef8,#f8e8ff 50%,#ffe8f0);min-height:100vh}.app-header{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff4d;box-shadow:0 2px 10px #ffb6c133;color:#8b5a8c;display:flex;justify-content:center;padding:1rem 2rem}.app-header h1{font-size:2rem;font-weight:600;margin:0}.app-main{display:flex;flex-direction:column;gap:1.5rem;margin:0 auto;max-width:500px;padding:1rem}.editor-section{gap:1.5rem;order:1}.canvas-container,.controls-container{background:#ffffffe6;border:1px solid #ffc0cb33;border-radius:16px;box-shadow:0 8px 32px #ffb6c126;padding:1.5rem}.controls-container{order:2}.gallery-section{background:#ffffffe6;border:1px solid #ffc0cb33;border-radius:16px;box-shadow:0 8px 32px #ffb6c126;max-height:60vh;order:3;overflow-y:auto;padding:1.5rem}@media (min-width:1024px){.app-main{flex-direction:row;gap:2rem;max-width:1200px;padding:2rem}.editor-section{flex:2 1;order:1}.gallery-section{flex:1 1;max-height:80vh;order:2}}@media (max-width:1023px) and (min-width:769px){.app-main{gap:1.5rem;max-width:600px;padding:1.5rem}.gallery-section{max-height:50vh}}@media (max-width:768px){.app-header{flex-direction:column;gap:1rem;padding:1rem}.app-header h1{font-size:1.5rem}.canvas-container,.controls-container,.gallery-section{padding:1rem}.gallery-section{max-height:45vh}}@media (max-width:480px){.app-main{gap:.75rem;max-width:100%;padding:.5rem}.app-header{padding:.75rem}.app-header h1{font-size:1.25rem}.canvas-container,.controls-container,.gallery-section{padding:.75rem}.gallery-section{max-height:40vh}}.app-footer{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;border-top:1px solid #ffc0cb33;margin-top:2rem;padding:1rem 2rem}.footer-content{margin:0 auto;max-width:1200px;text-align:center}.font-license{color:#8b5a8c;font-size:.85rem;margin:0;opacity:.8}.license-link{color:#d8a7ca;font-weight:500;text-decoration:none;transition:color .2s ease}.license-link:hover{color:#c48bb8;text-decoration:underline}@media (max-width:768px){.app-footer{margin-top:1rem;padding:.75rem 1rem}.font-license{font-size:.8rem}}.card-canvas-container{-webkit-text-size-adjust:none!important;-moz-text-size-adjust:none!important;text-size-adjust:none!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;width:100%}.canvas-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.canvas-header h3{color:#333;font-size:1.2rem;margin:0}.export-btn{background:linear-gradient(135deg,#f8a5c2,#e8a5c2);border:none;border-radius:8px;box-shadow:0 2px 8px #f8a5c24d;color:#fff;cursor:pointer;font-weight:500;padding:.5rem 1rem;transition:all .2s ease}.export-btn:hover{background:linear-gradient(135deg,#e8a5c2,#d895b2);box-shadow:0 4px 12px #f8a5c266;transform:translateY(-2px)}.card-canvas{background-clip:initial!important;background-color:#fef7f7;background-origin:border-box!important;background-position:50%!important;background-repeat:no-repeat!important;background-size:cover!important;-webkit-background-size:cover!important;-moz-background-size:cover!important;-o-background-size:cover!important;border-radius:0;box-shadow:0 4px 12px #ffb6c133;height:622px!important;margin:0 auto;overflow:hidden;position:relative;transform:scale(1);-webkit-transform:scale(1);-webkit-user-select:none;user-select:none;width:350px!important}.card-canvas:hover{box-shadow:0 6px 16px #ffb6c140}.placeholder-text{color:#999;font-size:1.1rem;left:50%;pointer-events:none;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.card-text-container{-webkit-overflow-scrolling:touch;-webkit-hyphens:auto;hyphens:auto;overflow:visible;position:absolute;word-break:break-word;z-index:10}.card-text-container:hover{outline:2px dashed #d8a7ca80;outline-offset:4px}.vertical-text-column{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;margin:0 4px;padding:4px;text-shadow:2px 2px 4px #00000080;transform:translateZ(0);-webkit-transform:translateZ(0)}.vertical-char{display:block;margin:1px 0;text-align:center;width:1em}.horizontal-text-line{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;padding:2px 4px;text-shadow:2px 2px 4px #0009,1px 1px 2px #000c}@media (max-width:768px){.card-canvas{background-attachment:scroll!important;-webkit-background-clip:border-box!important;background-clip:initial!important;background-origin:border-box!important;background-position:50%!important;background-size:cover!important;-webkit-background-size:cover!important;height:498px!important;margin:0 auto;transform:none!important;-webkit-transform:none!important;width:280px!important}.canvas-header{align-items:stretch;flex-direction:column;gap:.5rem}.export-btn{width:100%}.vertical-text-column{margin:0 3px;max-height:75vh;padding:3px}.horizontal-text-line{margin:1px 0;padding:1px 3px}}@media (max-width:480px){.card-canvas{aspect-ratio:9/16;height:400px;max-width:250px}.vertical-text-column{font-size:14px!important;max-height:70vh}.vertical-char{width:.9em}}@supports (-webkit-touch-callout:none){.card-canvas{-webkit-text-size-adjust:none!important;-moz-text-size-adjust:none!important;text-size-adjust:none!important}}.picture-gallery{display:flex;flex-direction:column;height:100%}.gallery-header{margin-bottom:1rem}.gallery-header h3{color:#333;font-size:1.2rem;margin:0 0 .5rem}.gallery-tabs{display:flex;gap:.5rem;margin-bottom:1rem}.tab-btn{align-items:center;background:#fff;border:2px solid #e9ecef;border-radius:6px;cursor:pointer;display:flex;flex:1 1;font-size:.9rem;gap:.25rem;justify-content:center;padding:.5rem 1rem;transition:all .2s ease}.tab-btn:hover{border-color:#d8a7ca}.tab-btn.active{background:linear-gradient(135deg,#f8a5c2,#e8a5c2);border-color:#0000;color:#fff}.crown-icon{color:gold}.gallery-content{flex:1 1;overflow-y:auto}.image-grid{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.image-item{aspect-ratio:9/16;border:2px solid #0000;border-radius:8px;cursor:pointer;overflow:hidden;position:relative;transition:all .2s ease}.image-item:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.image-item.selected{border-color:#d8a7ca;box-shadow:0 0 0 2px #d8a7ca33}.image-item img{background:linear-gradient(135deg,#ffeef8,#f8e8ff 50%,#ffe8f0);height:100%;object-fit:cover;transition:opacity .3s ease;width:100%}.image-item img:not([src]){opacity:0}.image-item:before{animation:spin 1s linear infinite;border:2px solid #d8a7ca;border-radius:50%;border-top-color:#0000;content:"";height:20px;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:opacity .3s ease;width:20px}.image-item img:not([complete])+.image-item:before{opacity:1}@keyframes spin{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}.selected-info{align-items:center;background:#f8f9fa;border-radius:6px;display:flex;justify-content:space-between;margin-top:1rem;padding:.75rem}.selected-info p{color:#666;font-size:.9rem;margin:0}.clear-btn{background:#dc3545;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.8rem;padding:.25rem .75rem;transition:background .2s ease}.clear-btn:hover{background:#c82333}@media (min-width:1024px){.image-grid{gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.image-item{aspect-ratio:4/3}}@media (max-width:768px){.image-grid{gap:.4rem;grid-template-columns:repeat(auto-fill,minmax(80px,1fr))}.selected-info{align-items:stretch;flex-direction:column;gap:.5rem}.clear-btn{width:100%}}@media (max-width:480px){.image-grid{gap:.3rem;grid-template-columns:repeat(3,1fr)}}.text-editor{display:flex;flex-direction:column;gap:1rem}.editor-header h3{color:#333;font-size:1.2rem;margin:0}.editor-section{display:flex;flex-direction:column;gap:.5rem}.editor-label{align-items:center;color:#555;display:flex;font-size:.9rem;font-weight:500;gap:.5rem}.icon{color:#d8a7ca}.text-input{background:#fff8facc;border:2px solid #f8d7da;border-radius:8px;font-family:inherit;font-size:1rem;min-height:60px;padding:.75rem;resize:vertical;transition:border-color .2s ease}.text-input:focus{background:#ffffffe6;border-color:#d8a7ca;outline:none}.font-buttons{display:flex;flex-wrap:wrap;gap:.5rem}.font-btn{background:#fff8facc;border:2px solid #f8d7da;border-radius:8px;color:#8b5a8c;cursor:pointer;flex:1 1;font-size:.9rem;font-weight:500;min-width:120px;padding:.75rem 1rem;transition:all .2s ease}.font-btn:hover{background:#ffffffe6;border-color:#d8a7ca;transform:translateY(-1px)}.font-btn.active{background:linear-gradient(135deg,#f8a5c2,#e8a5c2);border-color:#f8a5c2;box-shadow:0 2px 8px #f8a5c24d;color:#fff}.font-btn.active:hover{background:linear-gradient(135deg,#e8a5c2,#d895b2);box-shadow:0 4px 12px #f8a5c266}.writing-mode-buttons{display:flex;gap:.5rem;margin-top:.5rem}.writing-mode-btn{align-items:center;background:#fff;border:2px solid #f8d7da;border-radius:8px;color:#666;cursor:pointer;display:flex;flex:1 1;font-size:.9rem;font-weight:500;gap:.5rem;justify-content:center;min-height:44px;padding:.75rem 1rem;transition:all .3s ease}.writing-mode-btn:hover{background:#fef7f7;border-color:#d8a7ca;box-shadow:0 2px 8px #d8a7ca33;color:#333;transform:translateY(-1px)}.writing-mode-btn.active{background:linear-gradient(135deg,#f8a5c2,#e895b2);border-color:#d8a7ca;box-shadow:0 2px 8px #f8a5c24d;color:#fff}.writing-mode-btn.active:hover{background:linear-gradient(135deg,#e8a5c2,#d895b2);box-shadow:0 4px 12px #f8a5c266}.mode-icon{font-size:1rem}.color-buttons,.style-buttons{display:flex;gap:.5rem;margin-top:.5rem}.color-btn{align-items:center;background:#fff;border:2px solid #f8d7da;border-radius:8px;color:#666;cursor:pointer;display:flex;flex:1 1;flex-direction:column;font-size:.85rem;font-weight:500;gap:.3rem;justify-content:center;min-height:60px;padding:.75rem .5rem;transition:all .3s ease}.color-btn:hover{background:#fef7f7;border-color:#d8a7ca;box-shadow:0 2px 8px #d8a7ca33;color:#333;transform:translateY(-1px)}.color-btn.active{background:linear-gradient(135deg,#f8a5c2,#e895b2);border-color:#d8a7ca;box-shadow:0 2px 8px #f8a5c24d;color:#fff}.color-btn.active:hover{background:linear-gradient(135deg,#e8a5c2,#d895b2);box-shadow:0 4px 12px #f8a5c266}.color-preview{border:2px solid #ddd;border-radius:50%;height:20px;width:20px}.color-preview.white{background:#fff;border-color:#ccc}.color-preview.black{background:#000;border-color:#333}.color-preview.gray{background:#a0a0a0;border-color:#888}.style-btn{align-items:center;background:#fff;border:2px solid #f8d7da;border-radius:8px;color:#666;cursor:pointer;display:flex;flex:1 1;font-size:.9rem;font-weight:500;gap:.5rem;justify-content:center;min-height:44px;padding:.75rem 1rem;transition:all .2s ease}.style-btn:hover{background:#fef7f7;border-color:#d8a7ca;box-shadow:0 2px 8px #d8a7ca33;color:#333;transform:translateY(-1px)}.style-btn.active{background:linear-gradient(135deg,#f8a5c2,#e895b2);border-color:#d8a7ca;box-shadow:0 2px 8px #f8a5c24d;color:#fff}.style-btn.active:hover{background:linear-gradient(135deg,#e8a5c2,#d895b2);box-shadow:0 4px 12px #f8a5c266}.style-icon{font-size:1rem}.slider-container{align-items:center;display:flex;gap:.75rem}.slider-label{color:#666;font-size:.8rem;font-weight:500;min-width:30px;text-align:center}.size-slider{-webkit-appearance:none;background:#f8d7da;border-radius:3px;cursor:pointer;flex:1 1;height:6px;outline:none}.size-slider::-webkit-slider-thumb{appearance:none;background:#d8a7ca;border-radius:50%;cursor:pointer;height:18px;-webkit-transition:background .2s ease;transition:background .2s ease;width:18px}.size-slider::-webkit-slider-thumb:hover{background:#c48bb8}.size-slider::-moz-range-thumb{background:#d8a7ca;border:none;border-radius:50%;cursor:pointer;height:18px;width:18px}.font-preview{background:#f8f9fa;border:1px solid #e9ecef;border-radius:4px;color:#333;font-weight:500;margin-top:.5rem;padding:.5rem;text-align:center;transition:font-size .2s ease}.drag-hint{background:linear-gradient(135deg,#f8d7da20,#e8c5d020);border:1px solid #d8a7ca40;border-radius:8px;padding:.75rem;text-align:center}.drag-hint p{color:#d8a7ca;font-size:.9rem;margin:0}.drag-hint strong{color:#c48bb8}.reset-btn{background:linear-gradient(135deg,#f8a5c2,#e8a5c2);border:none;border-radius:8px;box-shadow:0 2px 8px #f8a5c24d;color:#fff;cursor:pointer;font-weight:500;padding:.75rem 1rem;transition:all .2s ease}.reset-btn:hover{background:linear-gradient(135deg,#e8a5c2,#d895b2);box-shadow:0 4px 12px #f8a5c266;transform:translateY(-1px)}@media (min-width:1024px){.text-editor{gap:1.5rem}}@media (max-width:768px){.text-editor{gap:.75rem}.editor-section{gap:.4rem}.text-input{font-size:.9rem;padding:.6rem}.font-buttons{flex-direction:column;gap:.4rem}.font-btn{font-size:.85rem;min-width:auto;padding:.6rem .8rem}.color-buttons{flex-direction:column;gap:.4rem}.color-btn{font-size:.85rem;min-height:50px;padding:.6rem;width:100%}}@media (max-width:480px){.text-editor{gap:.5rem}.editor-section{gap:.3rem}.editor-label{font-size:.8rem}.writing-mode-buttons{flex-direction:column;gap:.5rem}.writing-mode-btn{font-size:.9rem;padding:.6rem;width:100%}.color-buttons{flex-direction:column;gap:.5rem}.color-btn{font-size:.9rem;min-height:50px;padding:.6rem;width:100%}.style-buttons{flex-direction:column;gap:.5rem}.style-btn{font-size:.9rem;padding:.6rem;width:100%}}
/*# sourceMappingURL=main.12440ae5.css.map*/