*{box-sizing:border-box;margin:0;padding:0}body{color:#fff;overscroll-behavior:none;background:#1a1a2e;min-height:100dvh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow-x:hidden}#app{max-width:480px;padding:20px 16px 40px;padding-bottom:calc(40px + env(safe-area-inset-bottom,0px));flex-direction:column;min-height:100dvh;margin:0 auto;display:flex}header{text-align:center;padding:12px 0 16px}header h1{background:linear-gradient(135deg,gold,#ff8c00);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:22px;font-weight:700}.subtitle{color:#888;margin-top:2px;font-size:13px}.sample-section{border-radius:16px;margin-bottom:16px;overflow:hidden}.sample-img{border-radius:16px;width:100%;height:auto;display:block}.upload-area{text-align:center;cursor:pointer;background:#ffffff08;border:2px dashed #444;border-radius:16px;padding:48px 20px;transition:all .2s}.upload-area:active{transform:scale(.98)}.upload-area:hover{background:#ffd7000d;border-color:gold}.upload-icon{margin-bottom:12px;font-size:48px;display:block}.upload-area p{color:#aaa;font-size:15px}.preview-section{background:#111;border-radius:16px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.preview-section canvas{touch-action:none;width:100%;height:auto;display:block}.processing{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.spinner{border:4px solid #ffd70033;border-top-color:gold;border-radius:50%;width:48px;height:48px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.processing p{color:gold;font-size:14px}.controls{flex-direction:column;gap:6px;margin-top:10px;display:flex}.slider-row{align-items:center;gap:8px;display:flex}.slider-row label{color:#777;white-space:nowrap;width:32px;font-size:12px}.slider-row input[type=range]{appearance:none;cursor:pointer;background:0 0;flex:1;height:32px}.slider-row input[type=range]::-webkit-slider-runnable-track{background:#ffffff26;border-radius:2px;height:4px}.slider-row input[type=range]::-webkit-slider-thumb{appearance:none;background:gold;border:none;border-radius:50%;width:20px;height:20px;margin-top:-8px;box-shadow:0 1px 4px #0000004d}.slider-row input[type=range]::-moz-range-track{background:#ffffff26;border:none;border-radius:2px;height:4px}.slider-row input[type=range]::-moz-range-thumb{background:gold;border:none;border-radius:50%;width:20px;height:20px;box-shadow:0 1px 4px #0000004d}.hint{color:#555;text-align:center;margin:2px 0;font-size:11px}.edit-tools{gap:8px;display:flex}.btn-icon{color:#999;cursor:pointer;background:#ffffff14;border:none;border-radius:8px;padding:6px 14px;font-size:13px;transition:all .2s}.btn-icon:active{background:#ffffff26;transform:scale(.92)}.output-actions{gap:8px;margin-top:4px;display:flex}.btn{cursor:pointer;border:none;border-radius:10px;flex:1;justify-content:center;align-items:center;gap:6px;height:44px;padding:12px 8px;font-size:14px;font-weight:600;transition:all .2s;display:flex}.btn:active{transform:scale(.95)}.btn-tweet{color:#fff;background:#000;border:1px solid #333}.btn-share{color:#fff;background:linear-gradient(135deg,#00b4d8,#0077b6)}.btn-primary{color:#1a1a2e;background:linear-gradient(135deg,gold,#ff8c00)}.toast{bottom:40px;bottom:calc(40px + env(safe-area-inset-bottom,0px));color:#1a1a2e;opacity:0;pointer-events:none;z-index:100;background:#fffffff2;border-radius:8px;padding:10px 20px;font-size:14px;font-weight:600;transition:all .3s;position:fixed;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}footer{text-align:center;margin-top:auto;padding:24px 0 0}footer p{color:#555;font-size:12px;line-height:1.6}.oss-credits{color:#444;margin-top:12px;font-size:11px}.oss-credits summary{cursor:pointer;color:#555}.oss-credits ul{text-align:left;flex-direction:column;gap:8px;margin-top:8px;list-style:none;display:flex}.oss-credits a{color:#888;text-decoration:underline}.hidden{display:none!important}
