@import"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=IBM+Plex+Mono:wght@400;500&display=swap";.image-uploader{padding:18px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg,#fffdf8f5,#f8f1e6e6);box-shadow:var(--shadow-soft)}.upload-area{position:relative;overflow:hidden;border:1.5px dashed rgba(29,109,114,.34);border-radius:22px;padding:30px 22px;text-align:center;transition:border-color .2s ease,transform .2s ease,background .2s ease,box-shadow .2s ease;background:radial-gradient(circle at top,rgba(255,255,255,.8),transparent 60%),linear-gradient(180deg,#eef8f8d6,#fbf6eef2)}.upload-area:before{content:"";position:absolute;inset:auto -30% -55% auto;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(187,90,52,.12),transparent 68%)}.upload-area:hover{transform:translateY(-1px);border-color:#bb5a3485;box-shadow:0 18px 30px #452e1614}.upload-placeholder{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--ink-soft)}.upload-icon{width:54px;height:54px;color:var(--brand)}.upload-placeholder p{font-size:1.14rem;font-weight:700;color:var(--ink)}.upload-placeholder span{font-size:.9rem;color:var(--ink-faint)}.preview-container{position:relative;border-radius:18px;overflow:hidden;background:#fff}.preview-image{width:100%;max-height:220px;object-fit:cover;display:block;border-radius:18px}.change-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#211c151a,#211c15b3);color:#fff8ef;opacity:0;transition:opacity .2s ease;font-weight:700;letter-spacing:-.01em}.preview-container:hover .change-overlay{opacity:1}@media (max-width: 768px){.image-uploader{padding:16px;border-radius:20px}.upload-area{padding:24px 18px;border-radius:18px}.upload-icon{width:46px;height:46px}}.image-cropper{border-radius:24px}.cropper-header{margin-bottom:18px;text-align:center}.cropper-header h3{color:var(--ink);font-size:1.28rem;letter-spacing:-.03em;margin-bottom:6px}.cropper-header p{color:var(--ink-soft);font-size:.92rem}.cropper-canvas-container{position:relative;overflow:hidden;display:flex;justify-content:center;margin-bottom:18px;padding:18px;border-radius:24px;border:1px solid rgba(121,96,69,.12);background:radial-gradient(circle at top,rgba(255,255,255,.76),transparent 48%),linear-gradient(180deg,#f4eee5,#f7f1e9)}.cropper-canvas{border:1px solid rgba(29,109,114,.24);border-radius:18px;box-shadow:0 24px 52px #34251724;user-select:none;-webkit-user-select:none;touch-action:none;background:#fff}.cropper-controls{display:flex;flex-direction:column;gap:14px;margin-bottom:16px}.control-row{display:flex;flex-direction:column;gap:8px}.control-row label{color:var(--ink);font-weight:700;font-size:.92rem}.zoom-slider{width:100%;height:8px;border-radius:999px;background:linear-gradient(90deg,#1d6d722e,#bb5a343d);outline:none;-webkit-appearance:none}.zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:linear-gradient(135deg,var(--brand),#db7b53);border:2px solid #fff5e9;box-shadow:0 6px 14px #bb5a3447}.zoom-slider::-moz-range-thumb{width:20px;height:20px;border:none;border-radius:50%;background:linear-gradient(135deg,var(--brand),#db7b53)}.cropper-buttons{display:flex;gap:10px}.btn-reset,.btn-apply{flex:1;padding:13px 18px;border:1px solid transparent;border-radius:16px;font-weight:700;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.btn-reset{background:#ffffffd1;border-color:var(--line);color:var(--ink)}.btn-apply{background:linear-gradient(135deg,var(--brand),#da7b52);color:#fff8ef;box-shadow:0 14px 28px #bb5a3438}.btn-reset:hover,.btn-apply:hover{transform:translateY(-1px)}.cropper-info{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:14px 16px;border:1px solid var(--line);border-radius:18px;background:#ffffffb3}.info-item{display:flex;flex-direction:column;gap:4px}.info-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint)}.info-value{color:var(--ink);font-weight:700}@media (max-width: 768px){.cropper-canvas-container{padding:10px;border-radius:20px}.cropper-canvas{max-width:100%;height:auto}.cropper-buttons,.cropper-info{flex-direction:column}}.parameter-controls{padding:20px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg,#fffcf8fa,#f7efe4eb);box-shadow:var(--shadow-soft)}.parameter-controls h3{margin-bottom:18px;font-size:1.2rem;color:var(--ink);letter-spacing:-.03em}.control-group{margin-bottom:18px}.control-header{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:10px}.control-header label{font-size:.94rem;font-weight:700;color:var(--ink)}.control-value-group{display:flex;align-items:center;gap:8px}.control-value{min-width:48px;padding:5px 10px;border-radius:999px;background:#bb5a341f;color:var(--brand-deep);font-size:.86rem;font-weight:700;text-align:center}.control-number{width:86px;padding:8px 10px;border-radius:12px;border:1px solid var(--line);background:#ffffffc2;color:var(--ink)}.control-slider{width:100%;height:8px;border-radius:999px;background:linear-gradient(90deg,#1d6d722e,#bb5a343d);outline:none;-webkit-appearance:none}.control-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:linear-gradient(135deg,var(--brand),#db7b53);border:2px solid #fff5e9;box-shadow:0 6px 14px #bb5a3447}.control-slider::-moz-range-thumb{width:20px;height:20px;border:none;border-radius:50%;background:linear-gradient(135deg,var(--brand),#db7b53);box-shadow:0 6px 14px #bb5a3447}.control-slider:disabled,.control-number:disabled{opacity:.55;cursor:not-allowed}.control-description{margin-top:7px;color:var(--ink-faint);font-size:.83rem;line-height:1.45}.advanced-section{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.toggle-advanced{width:100%;display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:#ffffff94;color:var(--ink);font-weight:700;text-align:left}.toggle-advanced:hover:not(:disabled){border-color:var(--line-strong);background:#ffffffd1}.advanced-controls{margin-top:14px;padding:14px;border-radius:18px;background:#fffaf4cc;border:1px solid rgba(121,96,69,.1);display:flex;flex-direction:column;gap:14px}.checkbox-group{display:flex;flex-direction:column;gap:6px}.checkbox-group label{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:600}.checkbox-group input[type=checkbox]{width:18px;height:18px;accent-color:var(--brand)}.checkbox-group .control-description{margin-left:28px}.info-box{margin-top:16px;padding:14px 16px;border-radius:18px;border:1px solid rgba(29,109,114,.16);background:linear-gradient(180deg,#f0f9f9e6,#fdf8f0d6);color:var(--ink-soft);font-size:.86rem}.info-box strong{color:var(--teal-deep)}@media (max-width: 768px){.parameter-controls{padding:16px;border-radius:20px}.control-header{flex-direction:column;align-items:flex-start}.control-value-group{width:100%}}.step-controls{background:linear-gradient(180deg,#fffbf5e6,#f8f1e6f2);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;display:flex;flex-direction:column;gap:14px}.mode-tabs{display:flex;gap:4px;background:#745b3d14;border-radius:var(--radius-sm);padding:3px}.mode-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:5px;padding:8px 14px;border:none;border-radius:9px;cursor:pointer;font-size:.8rem;font-weight:700;color:var(--ink-soft);background:transparent;transition:all .18s;letter-spacing:.01em}.mode-tab.active{background:var(--surface-strong);color:var(--brand);box-shadow:0 1px 6px #3425171a}.mode-tab:hover:not(.active){color:var(--ink)}.manual-instruction{background:var(--surface-strong);border:1.5px solid rgba(187,90,52,.18);border-radius:var(--radius-md);padding:18px 16px;text-align:center;box-shadow:0 4px 16px #3425170f}.manual-step-label{font-size:.65rem;font-weight:700;letter-spacing:1.2px;color:var(--ink-faint);text-transform:uppercase;margin-bottom:14px}.manual-pins{display:flex;align-items:center;justify-content:center;gap:20px;margin-bottom:14px}.manual-pin{display:flex;flex-direction:column;align-items:center;gap:5px}.manual-pin-tag{font-size:.6rem;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-faint)}.manual-pin-num{font-size:2.6rem;font-family:IBM Plex Mono,monospace;font-weight:500;line-height:1;letter-spacing:-.04em}.manual-pin.from .manual-pin-num{color:var(--brand)}.manual-pin.to .manual-pin-num{color:var(--teal)}.manual-arrow{color:var(--line-strong);flex-shrink:0;margin-top:12px}.manual-hint{font-size:.82rem;color:var(--ink-soft);background:#745b3d0f;border-radius:8px;padding:7px 14px;line-height:1.4}.manual-hint strong{color:var(--ink)}.step-info{display:flex;flex-direction:column;gap:8px}.step-header{display:flex;justify-content:space-between;align-items:center}.step-label{font-weight:700;text-transform:uppercase;font-size:.7rem;letter-spacing:.8px;color:var(--ink-faint)}.step-counter{font-family:IBM Plex Mono,monospace;font-weight:500;font-size:.88rem;color:var(--brand)}.step-progress{font-size:.82rem;color:var(--ink-soft);text-align:center}.pin-info{display:flex;align-items:center;gap:10px;padding:9px 14px;background:#745b3d0f;border-radius:var(--radius-sm);justify-content:center}.pin-label{font-family:IBM Plex Mono,monospace;font-weight:500;font-size:.88rem;color:var(--ink)}.pin-arrow{color:var(--brand);display:inline-flex;align-items:center}.step-buttons{display:flex;gap:6px;justify-content:center}.step-btn{background:var(--surface-strong);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 14px;cursor:pointer;transition:all .18s;color:var(--ink-soft);min-width:44px;display:flex;align-items:center;justify-content:center}.step-btn:hover:not(:disabled){background:var(--brand);border-color:var(--brand);color:#fff8ef;transform:translateY(-1px);box-shadow:0 4px 12px #bb5a343d}.step-btn:active:not(:disabled){transform:translateY(0)}.step-btn:disabled{opacity:.28;cursor:not-allowed}.step-btn-play{background:linear-gradient(135deg,var(--brand) 0%,var(--brand-deep) 100%);border-color:transparent;color:#fff8ef;min-width:60px;box-shadow:0 6px 18px #bb5a3438}.step-btn-play:hover:not(:disabled){background:linear-gradient(135deg,var(--brand-deep) 0%,#6d2e15 100%);box-shadow:0 8px 22px #bb5a344d}.step-slider-container{margin-top:2px}.step-slider{width:100%;height:5px;border-radius:3px;background:#745b3d24;outline:none;-webkit-appearance:none;appearance:none}.step-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand-deep));cursor:pointer;transition:transform .15s;box-shadow:0 2px 6px #bb5a344d}.step-slider::-webkit-slider-thumb:hover{transform:scale(1.25)}.step-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand-deep));cursor:pointer;border:none;box-shadow:0 2px 6px #bb5a344d}.step-secondary-controls{display:flex;flex-direction:column;gap:10px}.jump-form{display:flex;gap:6px}.jump-input{flex:1;padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:.82rem;background:var(--surface-strong);color:var(--ink);outline:none;transition:border-color .18s,box-shadow .18s}.jump-input:focus{border-color:#bb5a3466;box-shadow:0 0 0 3px #bb5a3414}.jump-btn{padding:8px 14px;background:var(--teal);color:#f0fafa;border:none;border-radius:var(--radius-sm);font-size:.82rem;font-weight:700;cursor:pointer;transition:background .18s;white-space:nowrap}.jump-btn:hover{background:var(--teal-deep)}.speed-control{display:flex;align-items:center;gap:10px}.speed-label{font-size:.75rem;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;min-width:52px}.speed-slider{flex:1;height:4px;-webkit-appearance:none;appearance:none;background:#745b3d24;border-radius:2px;outline:none}.speed-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--teal);cursor:pointer}.speed-value{font-size:.72rem;color:var(--ink-faint);min-width:42px;text-align:right;font-weight:600}.save-controls{display:flex;gap:8px}.save-btn,.load-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:.8rem;font-weight:600;cursor:pointer;background:var(--surface-strong);color:var(--ink-soft);transition:all .18s}.save-btn:hover:not(:disabled){border-color:#bb5a344d;color:var(--brand);background:#bb5a340a}.load-btn:hover{border-color:#1d6d724d;color:var(--teal);background:#1d6d720a}.save-btn:disabled{opacity:.45;cursor:not-allowed}.save-badge{font-size:.62rem;background:#745b3d1a;padding:1px 5px;border-radius:4px;color:var(--ink-faint);margin-left:2px}.keyboard-hint{font-size:.68rem;color:var(--ink-faint);text-align:center;letter-spacing:.02em}.autosave-hint{display:flex;align-items:flex-start;gap:6px;font-size:.7rem;color:var(--teal-deep);background:#1d6d7212;border:1px solid rgba(29,109,114,.14);border-radius:var(--radius-sm);padding:8px 10px;line-height:1.4}.autosave-hint svg{flex-shrink:0;margin-top:1px;opacity:.7}.wrapping-tips{background:#bb5a340f;border:1px solid rgba(187,90,52,.16);border-radius:var(--radius-sm);padding:10px 12px;font-size:.78rem;color:var(--ink-soft);line-height:1.45}.wrapping-tips-title{display:flex;align-items:center;gap:5px;font-size:.78rem;font-weight:700;color:var(--brand-deep);margin-bottom:7px}.wrapping-tips-list{margin:0;padding-left:14px}.wrapping-tips-list li{margin-bottom:4px}.wrapping-tips-list li:last-child{margin-bottom:0}.modal-overlay{position:fixed;inset:0;background:#211c1585;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px;animation:overlayIn .18s ease}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface-strong);border:1px solid var(--line);border-radius:var(--radius-xl);padding:26px;width:100%;max-width:400px;box-shadow:0 28px 64px #34251738,0 0 0 1px #ffffff80 inset;animation:modalIn .22s cubic-bezier(.34,1.56,.64,1)}@keyframes modalIn{0%{opacity:0;transform:scale(.94) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-wide{max-width:520px}.modal h4{margin:0 0 6px;font-size:1.05rem;font-weight:700;color:var(--ink);letter-spacing:-.02em}.modal-sub{font-size:.82rem;color:var(--ink-soft);margin:0 0 18px}.modal-note{color:var(--ink-faint)}.modal-input{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:.9rem;background:#ffffffb3;color:var(--ink);outline:none;box-sizing:border-box;margin-bottom:14px;transition:border-color .18s,box-shadow .18s}.modal-input:focus{border-color:#bb5a3466;box-shadow:0 0 0 3px #bb5a3414}.modal-buttons{display:flex;gap:8px;justify-content:flex-end}.modal-cancel{padding:10px 18px;background:#745b3d14;border:none;border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;color:var(--ink-soft);cursor:pointer;transition:background .18s}.modal-cancel:hover{background:#745b3d24}.modal-cancel.full-width{width:100%;margin-top:10px;text-align:center}.modal-confirm{padding:10px 18px;background:linear-gradient(135deg,var(--brand),var(--brand-deep));border:none;border-radius:var(--radius-sm);font-size:.85rem;font-weight:700;color:#fff8ef;cursor:pointer;transition:opacity .18s,box-shadow .18s;box-shadow:0 4px 12px #bb5a3438}.modal-confirm:hover{opacity:.9;box-shadow:0 6px 18px #bb5a344d}.saves-list{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto;margin-bottom:4px;padding-right:2px}.saves-list::-webkit-scrollbar{width:4px}.saves-list::-webkit-scrollbar-track{background:transparent}.saves-list::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:2px}.save-item{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;background:#fff9;border:1px solid var(--line);border-radius:var(--radius-sm);gap:10px;transition:background .15s}.save-item:hover{background:#ffffffd9}.save-item-info{display:flex;flex-direction:column;gap:3px;min-width:0}.save-item-name{font-weight:700;font-size:.85rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.save-item-meta{font-size:.72rem;color:var(--ink-faint)}.save-item-actions{display:flex;gap:6px;flex-shrink:0}.save-item-load{padding:5px 12px;background:var(--teal);color:#f0fafa;border:none;border-radius:8px;font-size:.78rem;font-weight:700;cursor:pointer;transition:background .18s}.save-item-load:hover{background:var(--teal-deep)}.save-item-delete{padding:5px 8px;background:#af3e3514;color:var(--danger);border:none;border-radius:8px;cursor:pointer;display:flex;align-items:center;transition:background .18s}.save-item-delete:hover{background:#af3e3524}@media (max-width: 480px){.step-controls{padding:14px;gap:12px}.manual-pin-num{font-size:2.2rem}.step-btn{padding:8px 10px;min-width:38px}.speed-control{flex-wrap:wrap}}.string-art-canvas{display:flex;flex-direction:column;gap:20px}.canvas-header{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.canvas-header h3{color:var(--ink);font-size:1.28rem;letter-spacing:-.03em}.canvas-controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.toggle-btn,.download-btn,.edit-crop-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 16px;border-radius:16px;border:1px solid var(--line);font-size:.92rem;font-weight:700;transition:transform .18s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease}.toggle-btn:hover,.download-btn:hover,.edit-crop-btn:hover:not(:disabled){transform:translateY(-1px)}.toggle-btn{background:#ffffffc7;color:var(--ink)}.toggle-btn:hover{border-color:var(--line-strong);box-shadow:var(--shadow-soft)}.download-btn{color:#fff8ef;border-color:transparent;background:linear-gradient(135deg,var(--success),#53a56f);box-shadow:0 14px 24px #2e7d4f33}.download-btn:hover{box-shadow:0 18px 28px #2e7d4f42}.tiled-btn{background:linear-gradient(135deg,var(--teal),#2f9290);box-shadow:0 14px 24px #1d6d7233}.tiled-btn:hover{box-shadow:0 18px 28px #1d6d7247}.edit-crop-btn{background:linear-gradient(180deg,#fffbf6fa,#f9eeddf2);color:var(--warning);border-color:#bf7b193d}.edit-crop-btn:disabled{cursor:not-allowed;opacity:.55}.canvas-container{position:relative;min-height:620px;display:flex;align-items:center;justify-content:center;padding:20px;border:1px solid rgba(121,96,69,.12);border-radius:28px;overflow:hidden;background:radial-gradient(circle at top,rgba(255,255,255,.72),transparent 48%),linear-gradient(180deg,#f4eee5,#f7f1e9)}.canvas-container:before{content:"";position:absolute;inset:18px;border-radius:24px;border:1px dashed rgba(121,96,69,.12);pointer-events:none}.canvas{position:relative;z-index:1;max-width:100%;max-height:800px;display:block;background:#fff;border-radius:18px;box-shadow:0 24px 52px #34251724}.tile-export-panel{padding:18px;border:1px solid rgba(29,109,114,.14);border-radius:22px;background:linear-gradient(180deg,#f2faf9d6,#fffaf3f5);display:flex;flex-direction:column;gap:14px}.collapsible-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0;border:none;background:none;cursor:pointer;text-align:left}.collapsible-header h4{margin:0;color:var(--ink);font-size:1.05rem}.collapsible-header:hover h4{color:var(--teal-deep)}.tile-export-desc{color:var(--ink-soft);font-size:.92rem;margin:0}.tile-export-desc a{color:var(--teal-deep);text-decoration:underline}.jig-actions{display:flex;flex-wrap:wrap;gap:10px}.spotify-panel{padding:16px 18px;border:1px solid rgba(29,109,114,.16);border-radius:22px;background:linear-gradient(180deg,#f2faf9d6,#fffaf3f5);display:flex;flex-direction:column;gap:12px}.spotify-open-btn{display:flex;align-items:center;gap:8px;width:100%;padding:11px 14px;border:none;background:none;font-size:.9rem;font-weight:600;color:var(--teal-deep);cursor:pointer;border-radius:14px;transition:background .15s}.spotify-open-btn:hover{background:#1d6d7212}.spotify-header{display:flex;align-items:center;gap:7px;font-size:.9rem;font-weight:700;color:var(--teal-deep)}.spotify-header-icon{font-size:1rem}.spotify-external-link{margin-left:auto;padding:6px 10px;border-radius:10px;border:1px solid rgba(29,109,114,.24);color:var(--teal-deep);font-size:.78rem;font-weight:700;text-decoration:none;white-space:nowrap}.spotify-external-link:hover{background:#1d6d7212}.spotify-iframe{border-radius:14px;display:block}.spotify-input-row{display:flex;gap:8px}.spotify-input{flex:1;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:#ffffffd1;color:var(--ink);font-size:.88rem}.spotify-input:focus{outline:none;border-color:var(--teal-deep)}.spotify-confirm-btn{padding:10px 16px;border-radius:14px;border:none;background:var(--teal-deep);color:#fff;font-size:.88rem;font-weight:700;cursor:pointer;transition:opacity .18s}.spotify-confirm-btn:disabled{opacity:.35;cursor:not-allowed}.spotify-confirm-btn:hover:not(:disabled){opacity:.82}.spotify-change-btn{align-self:flex-start;padding:5px 11px;border-radius:10px;border:1px solid var(--line);background:transparent;color:var(--ink-soft);font-size:.8rem;cursor:pointer}.spotify-change-btn:hover{background:#0000000a}@media (max-width: 520px){.spotify-header{flex-wrap:wrap}.spotify-external-link{margin-left:0}.spotify-input-row{flex-direction:column}}.tile-export-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.tile-field{display:flex;flex-direction:column;gap:6px}.tile-field span{color:var(--ink);font-size:.88rem;font-weight:700}.tile-field input,.tile-field select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:14px;background:#ffffffd1;color:var(--ink)}.tile-export-summary{display:flex;flex-wrap:wrap;gap:10px}.tile-export-summary span{padding:8px 12px;border-radius:999px;background:#1d6d7214;color:var(--teal-deep);font-size:.86rem;font-weight:700}.processing-overlay{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#211c15e6,#4e361fd1);backdrop-filter:blur(12px);animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.loading-content{max-width:520px;padding:36px 30px;border:1px solid rgba(255,245,232,.12);border-radius:28px;background:#fff7ed14;color:#fff8ef;display:flex;flex-direction:column;align-items:center;gap:22px;text-align:center}.spinner-container{position:relative;width:84px;height:84px}.spinner{position:relative;z-index:2;width:84px;height:84px;border:6px solid rgba(255,246,234,.18);border-top-color:#fff8ef;border-radius:50%;animation:spin 1s linear infinite}.spinner-glow{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,rgba(255,214,181,.32),transparent 70%);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:.45}50%{transform:scale(1.18);opacity:.8}}.loading-title{font-size:1.85rem;line-height:1;letter-spacing:-.04em}.progress-container{width:100%;max-width:400px}.progress-bar{width:100%;height:30px;border-radius:999px;overflow:hidden;background:#fff5e829}.progress-fill{position:relative;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(90deg,var(--brand),#e07b51);transition:width .28s ease}.progress-fill:before{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);animation:btnShimmer 1.5s linear infinite}.progress-text{position:relative;z-index:1;color:#fff;font-size:.86rem;font-weight:700}.status-message,.loading-tip{color:#fff5e8db}.loading-tip{display:inline-flex;align-items:center;gap:8px}.processing-stats,.stats{display:flex;flex-wrap:wrap;gap:12px}.stat-badge,.stat-item{flex:1 1 140px;min-width:0;padding:14px 16px;border-radius:18px;border:1px solid var(--line);background:#ffffffb3}.stat-icon{display:inline-flex;align-items:center;justify-content:center}.stat-badge{display:flex;align-items:center;gap:8px;justify-content:center}.stat-label{display:block;margin-bottom:6px;font-size:.8rem;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em}.stat-value{color:var(--ink);font-weight:700;font-size:1.05rem}.processing-overlay-compact{position:absolute;bottom:0;left:0;right:0;z-index:10;padding:10px 16px;background:linear-gradient(to top,rgba(33,28,21,.78) 0%,transparent 100%);border-radius:0 0 24px 24px}.compact-progress-bar{width:100%;height:4px;background:#fff5e833;border-radius:2px;overflow:hidden;margin-bottom:6px}.compact-progress-fill{height:100%;background:linear-gradient(90deg,var(--brand),#e07b51);border-radius:2px;transition:width .3s ease}.compact-progress-info{display:flex;justify-content:space-between;align-items:center}.compact-status{font-size:.75rem;color:#fff5e8d9;font-weight:500}.compact-pct{font-size:.75rem;font-family:IBM Plex Mono,monospace;color:#fff5e8e6;font-weight:600}.stat-item-wide{flex:2 1 280px}.stat-thread{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.stat-thread-sub{font-size:.75rem;font-weight:400;color:var(--ink-faint)}.empty-state{position:relative;z-index:1;color:var(--ink-soft);font-size:1rem;font-weight:600}@media (max-width: 768px){.canvas-header{flex-direction:column;align-items:stretch}.canvas-controls{width:100%}.canvas-controls button{flex:1 1 100%}.canvas-container{min-height:380px;padding:14px;border-radius:22px}.loading-content{margin:16px;padding:24px 18px}}.json-importer{width:100%}.btn-import-json{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:13px 16px;border-radius:18px;border:1px dashed rgba(29,109,114,.42);background:linear-gradient(180deg,#f0f9f9eb,#fffbf6fa);color:var(--teal-deep);font-size:.94rem;font-weight:700;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .18s ease}.btn-import-json:hover{transform:translateY(-1px);border-color:#bb5a3475;box-shadow:0 16px 28px #452e1614;background:linear-gradient(180deg,#fff7f1f5,#fffcf8)}.import-icon{flex-shrink:0}.toast{position:fixed;top:18px;right:18px;min-width:290px;max-width:460px;padding:14px 16px;border-radius:20px;display:flex;align-items:center;gap:12px;box-shadow:0 26px 40px #3425172e;animation:toastIn .24s ease;z-index:1000;border:1px solid rgba(255,255,255,.1);backdrop-filter:blur(16px);overflow:hidden}@keyframes toastIn{0%{opacity:0;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.toast-success{background:#226844eb;color:#f6fff9}.toast-error{background:#8f2323f0;color:#fff6f5}.toast-info{background:#165262f0;color:#f4fcff}.toast-icon{width:34px;height:34px;border-radius:50%;background:#ffffff24;display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:700;flex-shrink:0}.toast-accent{position:absolute;left:0;top:0;bottom:0;width:4px;background:#ffffff7a}.toast-body{flex:1;min-width:0}.toast-label{margin-bottom:4px;font-size:.74rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;opacity:.78}.toast-message{font-size:.94rem;font-weight:600;line-height:1.4}.toast-close{width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:inherit;display:flex;align-items:center;justify-content:center}.toast-close:hover{background:#ffffff24}@media (max-width: 640px){.toast{left:14px;right:14px;top:14px;min-width:auto;max-width:none}}.landing-hero{position:relative;overflow:hidden;margin-bottom:38px;padding:52px 24px;border:1px solid rgba(121,96,69,.14);border-radius:34px;background:radial-gradient(circle at top,rgba(255,239,215,.42),transparent 34%),linear-gradient(135deg,#1c1812f5,#3f2a18eb);color:#fff8ef;box-shadow:0 28px 56px #34251733}.hero-orbit{position:absolute;border-radius:50%;border:1px solid rgba(255,233,201,.1);pointer-events:none}.hero-orbit-left{width:320px;height:320px;left:-120px;top:-80px;background:radial-gradient(circle,rgba(187,90,52,.18),transparent 68%)}.hero-orbit-right{width:260px;height:260px;right:-90px;bottom:-70px;background:radial-gradient(circle,rgba(29,109,114,.16),transparent 68%)}.hero-content{position:relative;z-index:1;max-width:920px;margin:0 auto;text-align:center}.hero-kicker{display:inline-flex;margin-bottom:18px;padding:7px 12px;border-radius:999px;border:1px solid rgba(255,227,192,.18);background:#fff8f014;color:#ffecd2d1;font-size:.82rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.hero-title{font-size:clamp(2.5rem,5vw,5rem);line-height:.96;letter-spacing:-.06em;margin-bottom:18px}.highlight{color:#ffd9ac;text-shadow:0 6px 24px rgba(255,188,120,.24)}.hero-subtitle{max-width:760px;margin:0 auto 28px;color:#fff0ded6;font-size:1.08rem;line-height:1.7}.hero-features{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-bottom:28px}.feature{display:inline-flex;align-items:center;gap:10px;padding:12px 16px;border-radius:999px;border:1px solid rgba(255,234,206,.1);background:#fffbf514;color:#fff7ed;font-weight:600;backdrop-filter:blur(10px)}.feature-icon{display:inline-flex;align-items:center;justify-content:center}.hero-actions{display:flex;flex-direction:column;align-items:center;gap:10px}.hero-cta{border:none;border-radius:999px;padding:16px 28px;background:linear-gradient(135deg,#f4c792,#db7b53);color:#2b1c10;font-size:1rem;font-weight:800;letter-spacing:-.02em;box-shadow:0 18px 32px #bb5a343d;transition:transform .18s ease,box-shadow .18s ease}.hero-cta:hover{transform:translateY(-1px);box-shadow:0 22px 38px #bb5a3452}.hero-microcopy{color:#ffe9cfc2;font-size:.9rem}.hero-note{margin-top:22px;color:#ffecd2b8;font-size:.92rem}@media (max-width: 768px){.landing-hero{padding:38px 18px;border-radius:24px}.hero-subtitle{font-size:.98rem}}.auth-login{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#fff;border:1.5px solid #dadce0;border-radius:20px;font-size:.8rem;font-weight:500;color:#3c4043;cursor:pointer;transition:box-shadow .2s,border-color .2s;white-space:nowrap}.auth-login:hover{box-shadow:0 2px 8px #0000001f;border-color:#bbb}.auth-user{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;background:#f1f3f4;border-radius:20px;font-size:.8rem;font-weight:500;color:#3c4043}.auth-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover}.auth-name{font-weight:500}.auth-logout{background:none;border:none;cursor:pointer;color:#888;font-size:.7rem;padding:2px 4px;border-radius:50%;transition:background .15s,color .15s;line-height:1}.auth-logout:hover{background:#ddd;color:#333}.app{max-width:1580px;margin:0 auto;padding:28px;border:1px solid rgba(121,96,69,.14);border-radius:36px;background:linear-gradient(180deg,#fffdf8b3,#f8f1e6e0),radial-gradient(circle at top right,rgba(187,90,52,.06),transparent 26%);box-shadow:var(--shadow-card);backdrop-filter:blur(18px);position:relative;overflow:hidden}.app:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(120deg,rgba(255,255,255,.36),transparent 24%),radial-gradient(circle at bottom left,rgba(29,109,114,.08),transparent 28%)}.app-header-auth{position:absolute;top:16px;right:20px;z-index:2}.app-header{position:relative;display:grid;gap:10px;margin-bottom:28px;padding:22px 26px;border-radius:26px;background:linear-gradient(135deg,#221c15f5,#4c351fe6),radial-gradient(circle at top right,rgba(255,255,255,.14),transparent 22%);color:#fff9f0;overflow:hidden}.app-header:after{content:"";position:absolute;width:220px;height:220px;right:-40px;top:-70px;border-radius:50%;background:radial-gradient(circle,rgba(255,202,146,.18),transparent 68%)}.app-header h2{position:relative;z-index:1;font-size:clamp(2rem,3vw,3.6rem);line-height:.96;letter-spacing:-.05em}.app-header p{position:relative;z-index:1;max-width:640px;color:#fff4e3d1;font-size:1rem}.app-content{display:grid;grid-template-columns:380px minmax(0,1fr);gap:24px;align-items:start;position:relative;z-index:1}.app-after-content{position:relative;z-index:1;display:grid;gap:32px;margin-top:34px}.app-after-content .faq-section{margin:0 auto;width:100%}.app-faq-sponsored-row{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;align-items:start}.app-sponsored-space{margin:0}.app-sponsored-space-side{justify-self:center;position:sticky;top:18px}.left-panel{display:flex;flex-direction:column;gap:18px}.right-panel{min-height:640px;padding:22px;background:linear-gradient(180deg,#fffdf8eb,#fffaf3f5);border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow-soft);position:relative}.cropper-panel{animation:panelFade .35s ease}@keyframes panelFade{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.actions{display:grid;gap:12px}.actions-right{margin-top:16px}.btn-primary,.btn-secondary{position:relative;border:1px solid transparent;border-radius:18px;padding:15px 22px;font-size:.98rem;font-weight:700;letter-spacing:-.01em;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .18s ease}.btn-primary:hover:not(:disabled),.btn-secondary:hover:not(:disabled){transform:translateY(-1px)}.btn-primary{color:#fff8ef;background:linear-gradient(135deg,var(--brand),#da7b52);box-shadow:0 14px 28px #bb5a3438}.btn-primary:hover:not(:disabled){box-shadow:0 18px 34px #bb5a344d}.btn-primary:disabled{cursor:not-allowed;opacity:.58;box-shadow:none}.btn-primary.processing{overflow:hidden}.btn-primary.processing:before{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,250,244,.24),transparent);animation:btnShimmer 1.35s linear infinite}.btn-secondary{color:var(--ink);background:linear-gradient(180deg,#fffbf6f5,#f8eee2fa);border-color:var(--line);box-shadow:inset 0 1px #ffffffb3}.btn-secondary:hover:not(:disabled){border-color:var(--line-strong);box-shadow:var(--shadow-soft)}@keyframes btnShimmer{to{transform:translate(100%)}}.btn-content{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;gap:10px}.btn-spinner{width:16px;height:16px;border:2px solid rgba(255,250,244,.26);border-top-color:#fff;border-radius:50%;animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 1100px){.app{padding:22px}.app-content{grid-template-columns:1fr}.left-panel{order:2}.right-panel{order:1;min-height:420px}}@media (max-width: 768px){.app{padding:16px;border-radius:26px}.app-header{padding:18px;border-radius:20px}.app-header p{font-size:.95rem}.right-panel{padding:16px;border-radius:22px}.app-after-content{gap:22px;margin-top:24px}.app-faq-sponsored-row{grid-template-columns:1fr}.app-sponsored-space-side{position:static;width:100%;max-width:100%}}.saved-sessions-panel{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border:1px solid rgba(29,109,114,.2);border-radius:18px;background:linear-gradient(180deg,#f2faf9e6,#fffaf3f2)}.saved-sessions-title{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--teal-deep);margin-bottom:2px}.saved-session-item{display:flex;align-items:center;gap:10px}.saved-session-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.saved-session-name{font-size:.88rem;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saved-session-meta{font-size:.76rem;color:var(--ink-faint)}.saved-session-load{flex-shrink:0;padding:7px 14px;border-radius:12px;border:none;background:var(--teal-deep);color:#fff;font-size:.84rem;font-weight:700;cursor:pointer;transition:opacity .18s}.saved-session-load:hover{opacity:.82}:root{--bg: #f3efe7;--bg-accent: #efe4d1;--surface: rgba(255, 251, 245, .76);--surface-strong: #fffdf8;--surface-soft: #f8f1e6;--line: rgba(116, 91, 61, .16);--line-strong: rgba(116, 91, 61, .28);--ink: #211c15;--ink-soft: #65594b;--ink-faint: #8f816f;--brand: #bb5a34;--brand-deep: #8f3f21;--brand-glow: rgba(187, 90, 52, .16);--teal: #1d6d72;--teal-deep: #0e4c50;--success: #2e7d4f;--warning: #bf7b19;--danger: #af3e35;--shadow-soft: 0 18px 40px rgba(52, 37, 23, .08);--shadow-card: 0 24px 48px rgba(69, 46, 22, .12);--radius-xl: 28px;--radius-lg: 22px;--radius-md: 16px;--radius-sm: 12px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Space Grotesk,Avenir Next,Segoe UI,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at top left,rgba(255,255,255,.78),transparent 28%),radial-gradient(circle at right 20%,rgba(29,109,114,.11),transparent 24%),linear-gradient(180deg,#efe5d5,#f3efe7 28%,#f6f0e8);min-height:100vh;padding:24px}body:before{content:"";position:fixed;inset:0;pointer-events:none;background-image:linear-gradient(rgba(72,49,24,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(72,49,24,.03) 1px,transparent 1px);background-size:22px 22px;mask-image:radial-gradient(circle at center,black 40%,transparent 92%);opacity:.55}code{font-family:IBM Plex Mono,SFMono-Regular,monospace}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(187,90,52,.24);outline-offset:2px}input[type=range]{cursor:pointer}::selection{background:#bb5a3433}@media (max-width: 640px){body{padding:14px}}
