@font-face{font-family:dejavu-sans;src:url(/api/album-assets/fonts/dejavu-sans.ttf) format("truetype");font-display:swap}@font-face{font-family:marck-script;src:url(/api/album-assets/fonts/marck-script.ttf) format("truetype");font-display:swap}@font-face{font-family:caveat;src:url(/api/album-assets/fonts/caveat.ttf) format("truetype");font-display:swap}@font-face{font-family:bad-script;src:url(/api/album-assets/fonts/bad-script.ttf) format("truetype");font-display:swap}@font-face{font-family:marmelad;src:url(/api/album-assets/fonts/marmelad.ttf) format("truetype");font-display:swap}@font-face{font-family:lobster;src:url(/api/album-assets/fonts/lobster.ttf) format("truetype");font-display:swap}@font-face{font-family:pt-sans;src:url(/api/album-assets/fonts/pt-sans.ttf) format("truetype");font-display:swap}@font-face{font-family:pt-serif;src:url(/api/album-assets/fonts/pt-serif.ttf) format("truetype");font-display:swap}@font-face{font-family:montserrat;src:url(/api/album-assets/fonts/montserrat.ttf) format("truetype");font-display:swap}@font-face{font-family:roboto;src:url(/api/album-assets/fonts/roboto.ttf) format("truetype");font-display:swap}@font-face{font-family:oswald;src:url(/api/album-assets/fonts/oswald.ttf) format("truetype");font-display:swap}@font-face{font-family:open-sans;src:url(/api/album-assets/fonts/open-sans.ttf) format("truetype");font-display:swap}@font-face{font-family:jura;src:url(/api/album-assets/fonts/jura.ttf) format("truetype");font-display:swap}@font-face{font-family:forum;src:url(/api/album-assets/fonts/forum.ttf) format("truetype");font-display:swap}@font-face{font-family:comfortaa;src:url(/api/album-assets/fonts/comfortaa.ttf) format("truetype");font-display:swap}@font-face{font-family:raleway;src:url(/api/album-assets/fonts/raleway.ttf) format("truetype");font-display:swap}@font-face{font-family:yeseva-one;src:url(/api/album-assets/fonts/yeseva-one.ttf) format("truetype");font-display:swap}@font-face{font-family:playfair-display;src:url(/api/album-assets/fonts/playfair-display.ttf) format("truetype");font-display:swap}@font-face{font-family:russo-one;src:url(/api/album-assets/fonts/russo-one.ttf) format("truetype");font-display:swap}@font-face{font-family:underdog;src:url(/api/album-assets/fonts/underdog.ttf) format("truetype");font-display:swap}@font-face{font-family:cuprum;src:url(/api/album-assets/fonts/cuprum.ttf) format("truetype");font-display:swap}.album-wrap{max-width:1100px;margin:0 auto;padding:16px;display:flex;gap:16px;align-items:flex-start}.album-stage-wrap{flex:1;display:flex;align-items:center;justify-content:center;min-width:0}.album-stage-fit{position:relative;overflow:hidden;border-radius:6px;background:#ddd;margin:0 auto;flex:none}.album-stage{position:absolute;top:0;left:0;transform-origin:top left;-webkit-user-select:none;user-select:none;touch-action:none}.album-stage img.album-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.album-el{position:absolute;left:0;top:0;cursor:grab;transform-origin:center center}.album-el.selected{outline:2px dashed #4f46e5;outline-offset:2px}.album-el img{display:block;pointer-events:none}.album-el .album-text{pointer-events:none}.album-el.text-block{outline:1px dashed rgba(79,70,229,.4);outline-offset:1px}.album-el.text-block.selected{outline:2px dashed #4f46e5;outline-offset:2px}.album-panel{width:300px;flex-shrink:0;background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:14px;max-height:90vh;overflow-y:auto}.album-panel h3{margin:0 0 4px;font-size:16px}.album-panel label{font-size:12px;color:var(--muted);display:block;margin-bottom:4px}.album-panel select,.album-panel input[type=text],.album-panel input[type=number],.album-panel textarea{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:6px;margin-bottom:0;font-family:inherit;font-size:13px}.album-panel textarea{resize:vertical}.album-panel .danger{margin-top:6px;font-size:12px;color:#b91c1c;border-color:#fecaca;background:#fff5f5}.album-designs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.album-designs button{padding:0;border:2px solid transparent;border-radius:4px;overflow:hidden;background:#f3f4f6;aspect-ratio:1 / 1}.album-designs button img{width:100%;height:100%;object-fit:contain}.album-designs button.active{border-color:var(--primary)}.album-row{display:flex;gap:6px}.album-row>*{flex:1}.album-submit{margin-top:4px;padding:12px;font-size:15px}.album-cats{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}.album-cats button{padding:4px 8px;font-size:12px;border:1px solid var(--border);background:#f3f4f6;border-radius:6px;cursor:pointer}.album-cats button.active{border-color:var(--primary);background:#eef2ff}.album-history{display:flex;gap:6px}.album-history button{width:40px;height:34px;padding:0;border:1px solid var(--border);background:#fff;border-radius:6px;font-size:20px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.album-history button:disabled{opacity:.4;cursor:default}.album-history button:not(:disabled):hover{background:#eef2ff;border-color:var(--primary)}.album-handles{position:absolute;transform-origin:center;border:1px dashed #4f46e5;pointer-events:none}.handle{position:absolute;width:28px;height:28px;background:#fff;border:2px solid #4f46e5;border-radius:5px;pointer-events:auto;touch-action:none;z-index:5;box-shadow:0 1px 4px #00000040}.handle-scale{right:-14px;bottom:-14px;cursor:nwse-resize}.handle-rotate{left:50%;top:-42px;transform:translate(-50%);border-radius:50%;cursor:grab}.handle-rotate:before{content:"";position:absolute;left:50%;top:100%;width:2px;height:14px;background:#4f46e5;transform:translate(-50%)}.font-picker{position:relative}.font-picker-btn{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:#fff;cursor:pointer;font-size:15px;text-align:left;overflow:hidden}.font-picker-caret{color:var(--muted);font-size:12px;flex-shrink:0}.font-picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10}.font-picker-list{position:absolute;z-index:11;left:0;right:0;top:calc(100% + 2px);max-height:280px;overflow-y:auto;background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px #0000001f}.font-picker-item{padding:8px 10px;font-size:17px;cursor:pointer;border-bottom:1px solid #f0f0f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.font-picker-item:last-child{border-bottom:none}.font-picker-item:hover{background:#f6f7ff}.font-picker-item.active{background:#eef2ff}.album-panel .show-all{margin-top:6px;padding:6px 8px;font-size:12px;color:var(--primary);background:#eef2ff;border:1px solid #c7d2fe;border-radius:6px;cursor:pointer}.album-layers{display:flex;flex-direction:column;gap:4px}.album-layer{display:flex;align-items:center;gap:8px;padding:4px 6px;border:1px solid var(--border);border-radius:6px;cursor:pointer;background:#fff}.album-layer.active{border-color:var(--primary);background:#eef2ff}.album-layer .layer-ic{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#f3f4f6;border-radius:4px;font-size:12px;font-weight:600;flex-shrink:0}.album-layer .layer-thumb{width:24px;height:24px;object-fit:contain;border-radius:4px;background:#f3f4f6;flex-shrink:0}.album-layer .layer-name{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.album-layer .layer-del{flex-shrink:0;width:26px;height:26px;padding:0;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:#b91c1c;font-size:20px;line-height:1;cursor:pointer;border-radius:4px}.album-layer .layer-del:hover{background:#fee2e2}@media (max-width: 820px){.album-wrap{flex-direction:column;align-items:stretch;padding:10px;gap:12px}.album-stage-wrap{flex:none;width:100%}.album-panel{width:100%;max-height:none;overflow-y:visible}.font-picker-list{max-height:240px}}:root{--bg: #f4f5f7;--card: #ffffff;--primary: #4f46e5;--primary-d: #4338ca;--text: #1f2430;--muted: #6b7280;--border: #e5e7eb;--ok: #16a34a;--err: #dc2626;--radius: 12px}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.45}.wrap{max-width:920px;margin:0 auto;padding:24px 16px 64px}.wrap.narrow{max-width:380px}header h1{margin:0 0 4px;font-size:26px}header p{margin:0 0 16px}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.muted{color:var(--muted)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:16px}.error{color:var(--err);background:#fef2f2;border:1px solid #fecaca;padding:10px 12px;border-radius:8px;margin-bottom:12px}.warn{color:#92400e;background:#fffbeb;border:1px solid #fcd34d;padding:10px 12px;border-radius:8px;margin:0 0 12px;font-size:14px}input,button,select,textarea{font:inherit}input[type=password],input:not([type]){width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;margin-bottom:12px}input.wb-input{width:auto;min-width:180px;flex:0 0 auto;margin-bottom:0}button{cursor:pointer;padding:10px 16px;border:1px solid var(--border);background:#fff;border-radius:8px;transition:background .15s}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}button.primary:hover:not(:disabled){background:var(--primary-d)}.slots-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0 24px}.slot{aspect-ratio:1 / 1;border:2px dashed var(--border);border-radius:var(--radius);background:#fff;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.slot.filled{border-style:solid;border-color:var(--ok)}.slot img{width:100%;height:100%;object-fit:cover}.slot-add{border:none;background:transparent;color:var(--muted);display:flex;flex-direction:column;gap:6px;align-items:center;width:100%;height:100%}.slot-add .plus{font-size:32px;line-height:1;color:var(--primary)}.slot-badge{position:absolute;top:6px;left:6px;background:var(--ok);color:#fff;font-size:11px;padding:2px 8px;border-radius:999px;z-index:2}.slot-actions{position:absolute;bottom:6px;left:6px;right:6px;display:flex;gap:6px;z-index:2}.slot-actions button{flex:1;padding:5px 4px;font-size:11px}footer{text-align:center}footer .primary{margin-top:8px;padding:14px 28px;font-size:16px}.success-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:32px;text-align:center}.success-card h1{margin:0 0 8px}.order-number{font-size:32px;font-weight:700;letter-spacing:2px;color:var(--primary);margin:12px 0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal{background:#fff;border-radius:var(--radius);padding:20px;width:100%;max-width:480px}.modal h3{margin:0 0 12px}.crop-area{position:relative;width:100%;aspect-ratio:1 / 1;background:#111;border-radius:8px;overflow:hidden}.crop-canvas{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}.crop-frame-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:2}.crop-legend{display:flex;gap:16px;justify-content:center;margin:8px 0 0;font-size:12px;color:var(--muted)}.legend-item{display:inline-flex;align-items:center;gap:6px}.legend-dot{width:12px;height:3px;border-radius:2px;display:inline-block}.legend-dot.red{background:#dc2626}.legend-dot.green{background:#16a34a}.controls{margin:12px 0;display:flex;flex-direction:column;gap:10px}.control-row{display:flex;align-items:center;gap:10px}.control-row-block{align-items:flex-start}.control-label{font-size:13px;color:var(--muted);width:80px;flex-shrink:0}.controls input[type=range]{flex:1}.zoom-controls{display:flex;align-items:center;gap:6px}.zoom-controls button{width:30px;height:30px;padding:0;font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center}.zoom-readout{font-size:13px;min-width:44px;text-align:center;font-variant-numeric:tabular-nums}.rot-btn{width:30px;height:30px;padding:0;font-size:16px;line-height:1}.rot-readout{font-size:13px;min-width:34px;text-align:center;font-variant-numeric:tabular-nums}.link-btn{background:transparent;border:none;color:var(--primary);padding:4px 0;font-size:13px;text-decoration:underline}.background-picker{flex:1}.bg-modes{display:flex;gap:6px;margin-bottom:8px}.bg-modes button{flex:1;padding:6px 8px;font-size:12px}.bg-modes button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.palette{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.swatch{width:26px;height:26px;border-radius:6px;border:2px solid var(--border);padding:0;cursor:pointer}.swatch.active{border-color:var(--primary);box-shadow:0 0 0 2px #4f46e540}.swatch-custom{position:relative;overflow:hidden;background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0}.swatch-custom input[type=color]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0;margin:0}.swatch-emoji{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:15px;line-height:1;pointer-events:none}.actions{display:flex;justify-content:flex-end;gap:8px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);font-size:14px;white-space:nowrap}th{background:#f9fafb;color:var(--muted);font-weight:600}.link-row{display:flex;gap:8px}.link-row input{flex:1;margin-bottom:0}@media (max-width: 560px){.slots-grid{grid-template-columns:repeat(2,1fr)}.control-label{width:64px}.modal{padding:14px}.modal-overlay{padding:8px}header h1{font-size:22px}footer .primary{width:100%}}
